CLI: CSV Import nach PostgreSQL
Autor: Ingmar Pforr
eingetragen: Donnerstag, 08. April 2010 um 16:40 Uhr (14/2010 Kalenderwoche)
geändert: Montag, 08. April 2013 um 18:29 Uhr (15/2013 Kalenderwoche)
Keywords: CLI CSV Import nach PostgreSQL (psql CLI Windows)
Kategorien: DB: PostgreSQL, Windows, UTF-8 / ISO,
Text:
(umgezogen auf https://wiki.zadi.de/wiki/PostgreSQLCSVImport)
Alternativen:
COPY kann auch in pgAdmin als SQL Statement ausgeführt werden, benötigt aber einen PostgreSQL superuser
Voraussetzung:
CSV Datei ist Komma-getrennt (modifizierbar, s.u.)
CSV Datei ist ASCII (weil ASCII=UTF8 abwährtskompatibel) oder UTF8 ohne Byte order mark (BOM)
(modifizierbar, siehe client_encoding)
cmd starten
Aufruf siehe Quellcode
Ein anderer Delimiter (Semikolon oder Tabulator statt Komma) und das Mapping von Überschriften in der ersten Zeile auf Datenbank-Spalte kann gesetzt werden (siehe Delimiter und Header):
http://www.postgresql.org/docs/8.2/static/sql-copy.html
Bei Daten mit Umlauten etc. muss dann in Excel unter "Unicode-Text" gespeichert werden, bei Delimiter wird Tabulator verwendet. Evtl. muss z.B. in Notepad++ der Zeichensatz von UTF16 auf UTF8 geändert werden.
Quellcode:
Beispiel csv 1:1 ohne header cd C:\Programme\PostgreSQL\8.1\bin\ psql.exe -c "COPY lu_melderegion FROM stdin CSV" -h grolsch.zadi.de -p 5432 meldfleisch "meldfleisch" < "C:\Dokumente und Einstellungen\ip\Desktop\melderegion2.csv" Beispiel nur bestimmte Zielspalten in bestimmter Reihenfolge (Spaltenamen in Klammern nach Tabellennamen) Tab als Delimiter (von Excel) erste Zeile ignorieren (HEADER) psql.exe -c "COPY lu_handelsbez (handelsbez_3alpha_code,handelsbez_scient_name,handelsbez_handelsbez)FROM stdin delimiter E'\t' CSV header" -h pgdev.zadi.de -p 5432 iuu-backend "iuu-backend" < "C:\temp2\hbz.txt"