Existe-t-il une requête SQL pour supprimer toutes les lignes de toutes les tables dans postgresql?
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