Maison > base de données > tutoriel mysql > Comment mettre à jour la colonne d'une table Postgres avec les données d'un fichier CSV tout en préservant les autres colonnes ?

Comment mettre à jour la colonne d'une table Postgres avec les données d'un fichier CSV tout en préservant les autres colonnes ?

Linda Hamilton
Libérer: 2025-01-15 10:50:44
original
646 Les gens l'ont consulté

How to Update a Postgres Table's Column with Data from a CSV File While Preserving Other Columns?

Mise à jour des tables Postgres avec des données CSV : une approche sélective

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

4. Supprimer la table temporaire :

Enfin, supprimez la table temporaire pour libérer des ressources :

<code class="language-sql">DROP TABLE tmp_x;</code>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal