PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak usunąć wszystkie tabele w psql (interaktywny terminal PostgreSQL), które zaczynają się od wspólnego słowa?

Ten skrypt wygeneruje polecenia DDL, aby usunąć je wszystkie:

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;

Obsada t.oid::regclass sprawia, że ​​składnia działa również dla identyfikatorów o różnej wielkości liter, słów zastrzeżonych lub znaków specjalnych w nazwach tabel. Zapobiega również wstrzykiwaniu SQL i dołącza nazwę schematu w razie potrzeby. Więcej informacji o typach identyfikatorów obiektów w podręczniku .

Informacje o ścieżce wyszukiwania schematu.

Możesz też zautomatyzować upuszczanie, ale jest to nierozsądne nie sprawdzać, co faktycznie usuwasz, zanim to zrobisz.

Możesz dołączyć CASCADE do każdej instrukcji do obiektów zależnych DROP (widoki i odwołujące się do kluczy obcych). Ale znowu, to nierozsądne chyba że bardzo dobrze wiesz, co robisz. Ograniczenia klucza obcego nie są dużą stratą, ale spowoduje to również całkowite porzucenie wszystkich zależnych widoków. Bez CASCADE otrzymujesz komunikaty o błędach informujące, które obiekty uniemożliwiają upuszczenie tabeli. I możesz sobie z tym poradzić.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Agregacja danych z OVER PARTITION według daty

  2. heroku pg:uwierzytelnianie hasła pull nie powiodło się

  3. Obsługa wielu dzierżawców z SQLAlchemy

  4. Postgres:WSTAW, jeśli jeszcze nie istnieje

  5. PySpark sqlContext odczytuje Postgres 9.6 NullPointerException