INSERT et COPY

La commande INSERT permet d'ajouter de nouvelle lignes dans une table.

Le synopsis simplifié de la commande est

INSERT INTO <nom_schema>.<nom_table> ([nom_champs] VALUES ([<valeur champ>]

exemple :

INSERT INTO "Structure" VALUES (38, '200036614', 'AGGLOMERATION SUD PAYS BASQUE', 'CA', 12, NULL);

Exemple d'extrait de script par sauvegarde en fichier à plat (SQL) avec commande INSERT explicite :

Exemple utilisation INSERT

Dans la pratique cette commande est surtout utilisée dans les scripts SQL générés par les sauvegardes (dump) et par les applications métiers. Dans le cas d'une utilisation SIG, la saisie des données se fera dans QGIS (en ajoutant la couche au canvas et en passant en mode édition).

La commande INSERT est toutefois beaucoup plus lente que la commande COPY.

COPY transfère des données entre les tables de PostgreSQL™ et les fichiers du système de fichiers standard. COPY TO copie le contenu d'une table vers un fichier tandis que COPY FROM copie des données depuis un fichier vers une table (ajoutant les données à celles déjà dans la table). COPY TO peut aussi copier le résultat d'une requête SELECT. Attention le système de fichier est celui du serveur, on ne peut copier ainsi des données sur le poste de travail distant.

On trouvera ici des recommandations pour optimiser les performances lors d'insertion massive.