PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menghapus semua tabel di psql (terminal interaktif PostgreSQL) yang dimulai dengan kata umum?

Skrip ini akan menghasilkan perintah DDL untuk menghapus semuanya:

SELECT 'DROP TABLE ' || t.oid::regclass || ';'
FROM   pg_class t
-- JOIN   pg_namespace n ON n.oid = t.relnamespace -- to select by schema
WHERE  t.relkind = 'r'
AND    t.relname ~~ E'doors\_%' -- enter search term for table here
-- AND n.nspname ~~ '%myschema%' -- optionally select by schema(s), too
ORDER  BY 1;

Pemeran t.oid::regclass membuat sintaks berfungsi untuk pengidentifikasi kasus campuran, kata-kata yang dicadangkan atau karakter khusus dalam nama tabel juga. Ini juga mencegah injeksi SQL dan menambahkan nama skema jika perlu. Selengkapnya tentang jenis pengenal objek dalam manual .

Tentang jalur penelusuran skema.

Anda juga dapat mengotomatiskan pelepasan, tetapi itu tidak bijaksana untuk tidak memeriksa apa yang sebenarnya Anda hapus sebelum melakukannya.

Anda dapat menambahkan CASCADE untuk setiap pernyataan ke DROP tergantung objek (tampilan dan referensi kunci asing). Tapi, sekali lagi, itu tidak bijaksana kecuali Anda tahu betul apa yang Anda lakukan. Kendala kunci asing bukanlah kerugian besar, tetapi ini juga akan menghapus semua tampilan dependen sepenuhnya. Tanpa CASCADE Anda mendapatkan pesan kesalahan yang memberi tahu Anda objek mana yang mencegah Anda menjatuhkan tabel. Dan Anda dapat mengatasinya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Peran drop PostgreSQL gagal karena hak default

  2. Bagaimana cara membuat izin kepada pengguna di semua tabel baru di Postgres?

  3. Bagaimana cara membandingkan data antara dua database di PostgreSQL?

  4. Dapatkan string kueri yang memicu pemicu

  5. Bagaimana to_date() Bekerja di PostgreSQL