Heim > Datenbank > MySQL-Tutorial > Wie aktualisiere ich die Spalte einer Postgres-Tabelle mit Daten aus einer CSV-Datei und behalte gleichzeitig andere Spalten bei?

Wie aktualisiere ich die Spalte einer Postgres-Tabelle mit Daten aus einer CSV-Datei und behalte gleichzeitig andere Spalten bei?

Linda Hamilton
Freigeben: 2025-01-15 10:50:44
Original
644 Leute haben es durchsucht

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

Postgres-Tabellen mit CSV-Daten aktualisieren: Ein selektiver Ansatz

Diese Anleitung zeigt, wie Sie die Spalte einer Postgres-Tabelle mithilfe von Daten aus einer CSV-Datei selektiv aktualisieren und andere Spalten unberührt lassen. Nehmen wir an, wir müssen die Spalte „Banane“ in unserer Tabelle aktualisieren und gleichzeitig die vorhandenen Werte der Spalte „Apfel“ beibehalten.

Lösung:

Diese Methode nutzt eine temporäre Tabelle für eine effiziente und sichere Datenbearbeitung.

1. Erstellen Sie eine temporäre Tabelle:

Erstellen Sie zunächst eine temporäre Tabelle (tmp_x), die die Struktur Ihrer Zieltabelle widerspiegelt, einschließlich des Primärschlüssels („ID“):

<code class="language-sql">CREATE TEMP TABLE tmp_x (id int, apple text, banana text);</code>
Nach dem Login kopieren

2. CSV-Daten importieren:

Als nächstes importieren Sie Ihre CSV-Daten mit dem Befehl COPY in die temporäre Tabelle. Denken Sie daran, /absolute/path/to/file durch den tatsächlichen Pfad zu Ihrer CSV-Datei 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 Zieltabelle:

Aktualisieren Sie nun die Spalte „Banana“ in Ihrer Haupttabelle (tbl) mithilfe von Daten aus der temporären Tabelle und gleichen Sie Zeilen basierend auf der Spalte „ID“ ab:

<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 abschließend die temporäre Tabelle, um Ressourcen freizugeben:

<code class="language-sql">DROP TABLE tmp_x;</code>
Nach dem Login kopieren

Wichtige Überlegungen:

  • Berechtigungen: Vor Postgres 11 erforderte der Befehl COPY normalerweise Superuser-Berechtigungen. Ab Postgres 11 können Rollen wie pg_read_server_files oder pg_write_server_files verwendet werden. Alternativ vermeidet der copy-Metabefehl in psql Superuser-Anforderungen.

  • Leistung: Verbessern Sie bei großen CSV-Dateien die Leistung, indem Sie temp_buffers anpassen und einen Index für die Spalte „ID“ der temporären Tabelle erstellen. Eine manuelle Analyse der temporären Tabelle (ANALYZE tmp_x;) wird empfohlen, da diese nicht automatisch analysiert wird.

Dieser Ansatz gewährleistet einen sauberen und effizienten Aktualisierungsprozess und minimiert das Risiko unbeabsichtigter Datenänderungen. Denken Sie daran, Ihre Daten immer zu sichern, bevor Sie größere Datenbankaktualisierungen durchführen.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich die Spalte einer Postgres-Tabelle mit Daten aus einer CSV-Datei und behalte gleichzeitig andere Spalten bei?. 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