Utilisation de données CSV pour mettre à jour des lignes Postgres spécifiques
Ce guide montre comment mettre à jour efficacement les lignes sélectionnées dans une table PostgreSQL à l'aide des données d'un fichier CSV. Nous utiliserons les commandes COPY
et UPDATE
pour cette tâche.
Scénario :
Imaginez une table PostgreSQL, 'tbl', avec les colonnes 'id', 'banana' et 'apple'. L'objectif est de mettre à jour uniquement la colonne « banane » pour des lignes spécifiques, en fonction des informations contenues dans un fichier CSV.
Procédure :
La solution implique ces étapes :
Créer une table temporaire :
Construire une table temporaire, tmp_x
, reflétant la structure de la table 'tbl' :
<code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text);</code>
Importer des données CSV :
Importez le contenu du fichier CSV dans tmp_x
à l'aide de la commande COPY
. N'oubliez pas de remplacer /absolute/path/to/file
par le chemin réel du fichier :
<code class="language-sql">COPY tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>
Mettre à jour la table principale :
Exécutez une instruction UPDATE
pour modifier la colonne 'banane' dans 'tbl'. Cela utilise les données de tmp_x
, 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>
Supprimer la table temporaire :
Après la mise à jour, supprimez la table temporaire :
<code class="language-sql">DROP TABLE tmp_x;</code>
Approches alternatives :
Création de table temporaire simplifiée : Si votre fichier CSV correspond à la structure de 'tbl', vous pouvez créer tmp_x
de manière plus concise :
<code class="language-sql"> CREATE TEMP TABLE tmp_x AS SELECT * FROM tbl LIMIT 0;</code>
Éviter les privilèges de superutilisateur : Pour COPY
opérations sans droits de superutilisateur, utilisez la méta-commande psql :
<code class="language-sql"> \copy tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>
Liens utiles :
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!