Ho una cinquantina di tabelle in un database, nel senso che ho bisogno solo di sei tabelle.Oracle - rilascia più tabelle in una singola query
Come posso eliminare le tabelle rimanenti con una singola query?
Ho una cinquantina di tabelle in un database, nel senso che ho bisogno solo di sei tabelle.Oracle - rilascia più tabelle in una singola query
Come posso eliminare le tabelle rimanenti con una singola query?
è possibile generare un elenco di DROP TABLE comandi con la query di seguito:
SELECT 'DROP TABLE ' || table_name || ';' FROM user_tables;
Dopo di che rimuovi i sei tavoli che vuoi mantenere ed eseguire gli altri comandi. Oppure aggiungi una clausola WHERE table_name NOT IN (...)
alla query.
Spero che aiuti.
si sta dando errore quando corro.SQL Errore: ORA-00942: tabella o vista non esiste. Ho usato questa query SELECT 'DROP TABLE' || nome_tabella || ';' FROM pmd_dba; qui pmd_dba è il database – vim
No, devi usare 'user_tables'. È una vista di tutti i tavoli in cui sei il proprietario. – DirkNM
Ecco un esempio: http://sqlfiddle.com/#!4/898b1/1 – DirkNM
Usa qualcosa di simile, in quanto non v'è alcun comando diretto o modo in Oracle per fare questo
begin
for rec in (select table_name
from all_tables
where table_name like '%ABC_%'
)
loop
execute immediate 'drop table '||rec.table_name;
end loop;
end;
/
Aggiungerei anche CASCADE CONSTRAINTS – Multisync
E userei 'user_tables' invece di' all_tables'. Altrimenti è possibile rilasciare una tabella con lo stesso nome in un altro schema (se si dispone di autorizzazioni DROP). – DirkNM
@Deepu in dove clausola possiamo usare "non in" operatore e poi abbiamo messo tutti e sei i nomi laggiù? – vim
Prima eseguire questa query con i nomi tabella che si desidera conservare.
SELECT CONCAT('DROP TABLE ', GROUP_CONCAT(table_name) , ';')
AS statement FROM information_schema.tables
WHERE table_schema = 'mydatabase' AND table_name not in ('table1', 'table2', 'table3');
Questa query fornirà una query della tabella DROP.
,
;\ndrop table
. Nota che c'è uno spazio dopo la tabella delle parole. Sostituisci tutto.drop table
prima del tuo primo tavolo e ;
dopo il tuo ultimo.
Se fossi in te, esporterò i sei tavoli, lascerò tutto e ripristinerò i sei tavoli. – Raptor
Non hai nessuno strumento come SQL Developer o Toad? Basta fare clic sulle tabelle (usando shift e ctrl se lo si desidera), quindi fare clic su Rilascia. –
@ThorstenKettner Ho lo sviluppatore sql, ma il problema è che posso selezionare più tabelle ma dopo aver selezionato più tabelle non si dà l'opzione "Drop". – vim