2016-04-21 10 views
0

Ich habe eine Tabelle in Postgres mit nur 2 SpaltenSo importieren Sie eine CSV-Datei mit COPY in Postgres - Überspringen Sie einige Spalten?

CREATE table dummy(col1 char(10), col2 char(10)); 

Die CSV-Datei enthält die folgenden Spalten:

gid  prov    name  pop1996 
4468  BC    VANCOUVER 514008 
4501  BC    SURREY  304477 
4473  BC    BURNABY  179209 
4485  BC    RICHMOND 148867 

Wie kann ich kopieren gid und Namen nur aus dieser Datei \COPY mit?

+1

Wahrscheinlich Duplikat von http://stackoverflow.com/questions/12618232/copy-a-few-of-the-columns-of- a-csv-file-in-a-table –

Antwort

0

Wenn Sie nichts dagegen haben andere Tabellen erstellen, können Sie die Q/A @Jan Marek folgen wies darauf hin: https://stackoverflow.com/a/12619903/318174

Wenn Sie keine zusätzlichen Tabellen erstellen können, als Sie dies tun können:

Sie muss zuerst die CSV-Datei vorverarbeiten, indem Sie die Spalten entfernen, die Sie nicht möchten. Der einfachste Weg ist UNIX-Schnitt.

cat file.csv | cut -d '\t' 1,3 > processed.csv 

Wenn Ihre CSV-Datei benötigt einige Umschreibungen hat, kann man vor einem python script I wrote eine lange Zeit, die genau wie geschnitten ist, aber respektiert CSV.

cat file.csv | csvcut.py -d '\t' 1,3 > processed.csv 

nächstes laden Sie psql und geben Sie ein:

\copy your_table (col1,col2) FROM '/path/to/processed.csv' DELIMITER '\t' CSV; 
+0

Gibt es eine Möglichkeit, es mit Windows-Eingabeaufforderung zu tun? – Nidhi

+0

Python wird unter Windows installiert, damit Sie mein Python-Skript verwenden können. –

+0

Oh, Sie müssen immer noch die CSV-Datei zum Python-Skript pipe. Nun, ich empfehle, wenn Sie Powershell, Cygwin, Babun oder Gow nicht bereits installiert haben. Sobald Sie das tun, öffnen Sie die bessere Shell und führen Sie den Befehl aus. –

Verwandte Themen