Saya menggunakan postgresql dan saya harus menghapus semua tabel yang ada dalam skema. Bagaimana saya bisa menghapus dari command prompt.
Saya menggunakan postgresql dan saya harus menghapus semua tabel yang ada dalam skema. Bagaimana saya bisa menghapus dari command prompt.
Jawaban:
Anda ingin menggunakan CASCADE
opsi DROP SCHEMA
. Dari dokumentasi :
CASCADE
- Secara otomatis menjatuhkan objek (tabel, fungsi, dll.) Yang terkandung dalam skema, dan pada gilirannya semua objek yang bergantung pada objek tersebut
HATI-HATI - penekanan di atas tambang.
Jelas Anda harus membuat ulang skema setelahnya.
Untuk hanya membuang semua tabel dalam skema saat ini, Anda dapat menggunakan skrip ini:
DO $$ DECLARE
tabname RECORD;
BEGIN
FOR tabname IN (SELECT tablename
FROM pg_tables
WHERE schemaname = current_schema())
LOOP
EXECUTE 'DROP TABLE IF EXISTS ' || quote_ident(tabname.tablename) || ' CASCADE';
END LOOP;
END $$;
Ubah WHERE schemaname = current_schema()
jika Anda ingin menjatuhkan semua tabel dalam skema yang berbeda.
LINE 2
? Apa yang ada di saluran 1?
@ Techno Savvy
Jatuhkan tabel menggunakan sintaks postgres:
select '-- drop table ' || tablename || ' cascade;' from pg_tables
where tablename not like 'pg%' and tablename not like 'sql%';
Salin teks yang dihasilkan ke skrip sql atau terminal psql. Perhatikan bahwa perintah dikomentari.
Jika Anda hanya ingin cara yang sangat sederhana untuk melakukan ini .. Ini adalah skrip yang saya gunakan di masa lalu
select 'drop table '||table_name||' cascade constraints;' from user_tables;
Ini akan mencetak serangkaian perintah drop untuk semua tabel dalam skema. Spool hasil dari query ini dan jalankan.
Demikian juga jika Anda ingin menghapus lebih dari tabel, Anda dapat mengedit berikut ini sesuai dengan kebutuhan Anda
select 'drop '||object_type||' '|| object_name || ';' from user_objects where object_type in ('VIEW','PACKAGE','SEQUENCE', 'PROCEDURE', 'FUNCTION', 'INDEX')
Sumber: https://forums.oracle.com/forums/thread.jspa?threadID=614090