Maison > base de données > tutoriel mysql > Comment mettre à jour des lignes Postgres spécifiques à partir d'un fichier CSV ?

Comment mettre à jour des lignes Postgres spécifiques à partir d'un fichier CSV ?

Linda Hamilton
Libérer: 2025-01-15 07:55:45
original
630 Les gens l'ont consulté

How to Update Specific Postgres Rows from a CSV File?

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 :

  1. 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>
    Copier après la connexion
  2. 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>
    Copier après la connexion
  3. 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>
    Copier après la connexion
  4. Supprimer la table temporaire :

    Après la mise à jour, supprimez la table temporaire :

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

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

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!

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