Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich bestimmte Postgres-Zeilen aus einer CSV-Datei?

Wie aktualisiere ich bestimmte Postgres-Zeilen aus einer CSV-Datei?

Linda Hamilton
Linda HamiltonOriginal
2025-01-15 07:55:45675Durchsuche

How to Update Specific Postgres Rows from a CSV File?

Verwenden von CSV-Daten zum Aktualisieren bestimmter Postgres-Zeilen

Diese Anleitung zeigt, wie Sie ausgewählte Zeilen in einer PostgreSQL-Tabelle mithilfe von Daten aus einer CSV-Datei effizient aktualisieren. Für diese Aufgabe nutzen wir die Befehle COPY und UPDATE.

Szenario:

Stellen Sie sich eine PostgreSQL-Tabelle „tbl“ mit den Spalten „id“, „banana“ und „apple“ vor. Das Ziel besteht darin, basierend auf den Informationen in einer CSV-Datei nur die Spalte „Banane“ für bestimmte Zeilen zu aktualisieren.

Vorgehensweise:

Die Lösung umfasst diese Schritte:

  1. Erstellen Sie eine temporäre Tabelle:

    Erstellen Sie eine temporäre Tabelle tmp_x, die die Struktur der Tabelle „tbl“ widerspiegelt:

    <code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text);</code>
  2. CSV-Daten importieren:

    Importieren Sie den Inhalt der CSV-Datei mit dem Befehl tmp_x in COPY. Denken Sie daran, /absolute/path/to/file durch den tatsächlichen Dateipfad zu ersetzen:

    <code class="language-sql">COPY tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>
  3. Aktualisieren Sie die Haupttabelle:

    Führen Sie eine UPDATE-Anweisung aus, um die Spalte „Banane“ in „tbl“ zu ändern. Dabei werden Daten aus tmp_x verwendet, die Zeilen basierend auf der Spalte „id“ abgleichen:

    <code class="language-sql">UPDATE tbl
    SET    banana = tmp_x.banana
    FROM   tmp_x
    WHERE  tbl.id = tmp_x.id;</code>
  4. Entfernen Sie die temporäre Tabelle:

    Entfernen Sie nach dem Update die temporäre Tabelle:

    <code class="language-sql">DROP TABLE tmp_x;</code>

Alternative Ansätze:

  • Vereinfachte temporäre Tabellenerstellung: Wenn Ihre CSV-Datei mit der Struktur von „tbl“ übereinstimmt, können Sie tmp_x prägnanter erstellen:

    <code class="language-sql"> CREATE TEMP TABLE tmp_x AS SELECT * FROM tbl LIMIT 0;</code>
  • Vermeiden von Superuser-Berechtigungen: Für COPY Vorgänge ohne Superuser-Rechte verwenden Sie den psql-Metabefehl:

    <code class="language-sql"> \copy tmp_x FROM '/absolute/path/to/file' (FORMAT csv);</code>

Hilfreiche Links:

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich bestimmte Postgres-Zeilen aus einer CSV-Datei?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn