Bonjour, je veux supprimer toutes les données de mes tables postgresql, mais pas la table elle-même. Comment puis-je faire cela ?
Réponses
Trop de publicités?Utilisez le TRUNCATE TABLE
commandement.
Le contenu de la ou des tables de la base de données PostgreSQL peut être supprimé de plusieurs façons.
Suppression du contenu d'une table à l'aide de sql :
Suppression du contenu d'une table :
TRUNCATE table_name;
DELETE FROM table_name;
Suppression du contenu de toutes les tables nommées :
TRUNCATE table_a, table_b, …, table_z;
Suppression du contenu des tables nommées et des tables qui y font référence (je l'expliquerai plus en détail plus loin dans cette réponse) :
TRUNCATE table_a, table_b CASCADE;
Suppression du contenu d'une table à l'aide de pgAdmin :
Suppression du contenu d'une table :
Right click on the table -> Truncate
Suppression du contenu du tableau et des tableaux qui y font référence :
Right click on the table -> Truncate Cascaded
Différence entre supprimer et tronquer :
Dans la documentation :
DELETE supprime les lignes qui satisfont à la clause WHERE de la base de données spécifiée. spécifiée. Si la clause WHERE est absente, l'effet est de supprimer tous les enregistrements dans la table. http://www.postgresql.org/docs/9.3/static/sql-delete.html
TRUNCATE est une extension PostgreSQL qui fournit un mécanisme plus rapide pour supprimer toutes les lignes d'une table. TRUNCATE supprime rapidement tous les enregistrements d'une table. ensemble de tables. Il a le même effet qu'un DELETE non qualifié sur chaque table. table, mais comme elle ne scanne pas les tables, elle est plus rapide. De plus, il récupère immédiatement de l'espace disque, plutôt que de nécessiter une opération VACUUM ultérieure. Cette méthode est particulièrement utile pour les grandes tables. http://www.postgresql.org/docs/9.1/static/sql-truncate.html
Travailler avec une table qui est référencée par une autre table :
Lorsque vous avez une base de données qui contient plus d'une table, les tables ont probablement une relation. Par exemple, il y a trois tables :
create table customers (
customer_id int not null,
name varchar(20),
surname varchar(30),
constraint pk_customer primary key (customer_id)
);
create table orders (
order_id int not null,
number int not null,
customer_id int not null,
constraint pk_order primary key (order_id),
constraint fk_customer foreign key (customer_id) references customers(customer_id)
);
create table loyalty_cards (
card_id int not null,
card_number varchar(10) not null,
customer_id int not null,
constraint pk_card primary key (card_id),
constraint fk_customer foreign key (customer_id) references customers(customer_id)
);
Et certains ont préparé des données pour ces tableaux :
insert into customers values (1, 'John', 'Smith');
insert into orders values
(10, 1000, 1),
(11, 1009, 1),
(12, 1010, 1);
insert into loyalty_cards values (100, 'A123456789', 1);
La table orders fait référence à la table customers et la table loyalty_cards fait référence à la table customers. Lorsque vous essayez de faire un TRUNCATE / DELETE FROM de la table qui est référencée par une ou plusieurs autres tables (l'autre ou les autres tables ont une contrainte de clé étrangère vers la table nommée), vous obtenez une erreur. Pour supprimer le contenu des trois tables, vous devez nommer toutes ces tables (l'ordre n'est pas important)
TRUNCATE customers, loyalty_cards, orders;
ou juste la table qui est référencée avec le mot clé CASCADE (vous pouvez nommer plus de tables qu'une seule)
TRUNCATE customers CASCADE;
Il en va de même pour pgAdmin. Faites un clic droit sur la table des clients et choisissez Truncate Cascaded.
Pour petit tableaux DELETE
est souvent plus rapide et nécessite un verrouillage moins agressif (pour une charge concurrente importante) :
DELETE FROM tbl;
Sans WHERE
condition.
Pour moyenne ou grande les tables, allez-y avec TRUNCATE tbl
comme l'a fait @Greg.
J'ai trouvé un moyen très simple et rapide pour tous ceux qui pourraient utiliser un outil tel que DBeaver : Il suffit de sélectionner toutes les tables que vous voulez tronquer ( SHIFT + click
o CTRL + click
) alors right click
Et si vous avez des clés étrangères, sélectionnez aussi CASCADE
option sur Settings
panneau. Start
et c'est tout ce qu'il faut !