Ce guide montre comment mettre à jour de manière sélective la colonne d'une table Postgres à l'aide des données d'un fichier CSV, en laissant les autres colonnes intactes. Disons que nous devons mettre à jour la colonne « Banane » dans notre tableau tout en préservant les valeurs existantes de la colonne « Pomme ».
Solution :
Cette méthode utilise une table temporaire pour une manipulation efficace et sûre des données.
1. Créer une table temporaire :
Tout d'abord, créez une table temporaire (tmp_x
) reflétant la structure de votre table cible, y compris la clé primaire ("ID") :
<code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text);</code>
2. Importer des données CSV :
Ensuite, importez vos données CSV dans la table temporaire à l'aide de la commande COPY
. N'oubliez pas de remplacer /absolute/path/to/file
par le chemin réel de votre fichier CSV :
<code class="language-sql">COPY tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>
3. Mettre à jour la table cible :
Maintenant, mettez à jour la colonne "Banana" dans votre table principale (tbl
) en utilisant les données de la table temporaire, en faisant correspondre les lignes en fonction de la colonne "ID":
<code class="language-sql">UPDATE tbl SET banana = tmp_x.banana FROM tmp_x WHERE tbl.id = tmp_x.id;</code>
4. Supprimer la table temporaire :
Enfin, supprimez la table temporaire pour libérer des ressources :
<code class="language-sql">DROP TABLE tmp_x;</code>
Considérations importantes :
Privilèges : Avant Postgres 11, la commande COPY
nécessite généralement des privilèges de superutilisateur. À partir de Postgres 11, des rôles comme pg_read_server_files
ou pg_write_server_files
peuvent être utilisés. Alternativement, la méta-commande copy
dans psql
évite les exigences du superutilisateur.
Performances : Pour les fichiers CSV volumineux, améliorez les performances en ajustant temp_buffers
et en créant un index sur la colonne "ID" de la table temporaire. L'analyse manuelle de la table temporaire (ANALYZE tmp_x;
) est recommandée car elle n'est pas automatiquement analysée.
Cette approche garantit un processus de mise à jour propre et efficace, minimisant le risque de modifications involontaires des données. N'oubliez pas de toujours sauvegarder vos données avant d'effectuer toute mise à jour importante de la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!