web-dev-qa-db-fra.com

Comment supprimer toutes les lignes de toutes les tables dans postgresql?

Existe-t-il une requête SQL pour supprimer toutes les lignes de toutes les tables dans postgresql?

6
Thirumal

Méthode 1: créez un fichier avec un ensemble d'instructions sql pour tronquer chaque table, puis exécutez ces instructions à partir du fichier.

testdb=# \t
Tuples only is on.
testdb=# \o truncate_all_tables.sql
testdb=# SELECT 'TRUNCATE ' || table_name || ';' FROM information_schema.tables WHERE table_schema='public' AND table_type='BASE TABLE';
testdb=# \o
testdb=# \t
Tuples only is off.
testdb=# \i truncate_all_tables.sql
TRUNCATE TABLE_NAME CASCADE
TRUNCATE TABLE_NAME CASCADE
TRUNCATE TABLE_NAME CASCADE
TRUNCATE TABLE_NAME CASCADE
TRUNCATE TABLE_NAME CASCADE

Méthode 2: créez un vidage de base de données avec un schéma uniquement, recréez la base de données et restaurez le vidage.

# pg_dump -U postgres -v -Fc -s -f testdb.dump testdb
# dropdb -U postgres testdb
# createdb -U postgres testdb
# pg_restore -U postgres -v -d testdb testdb.dump
12
Vitaly Pyslar