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
Freigeben: 2025-01-15 07:55:45
Original
629 Leute haben es durchsucht

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>
    Nach dem Login kopieren
  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>
    Nach dem Login kopieren
  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>
    Nach dem Login kopieren
  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>
    Nach dem Login kopieren

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>
    Nach dem Login kopieren
  • 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>
    Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage