Postgresql 如何使用复制-跳过几列将CSV文件导入postgres?

Postgresql 如何使用复制-跳过几列将CSV文件导入postgres?,postgresql,csv,Postgresql,Csv,我在Postgres中有一个只有两列的表 CREATE table dummy(col1 char(10), col2 char(10)); CSV文件具有以下列: gid prov name pop1996 4468 BC VANCOUVER 514008 4501 BC SURREY 304477 4473 BC

我在Postgres中有一个只有两列的表

CREATE table dummy(col1 char(10), col2 char(10));
CSV文件具有以下列:

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

如何使用\copy?

仅从该文件复制gid和name?如果您不介意创建其他表,您可以按照Q/A@Jan Marek指出的方法进行操作:

如果无法创建其他表,则可以执行以下操作:

您需要先通过删除不需要的列来预处理CSV文件。最简单的方法是使用unixcut

cat file.csv | cut -d '\t' 1,3 > processed.csv
如果你的CSV文件有一些转义需要,你可以使用一个很早以前,这是完全一样的削减,但尊重CSV

cat file.csv | csvcut.py -d '\t' 1,3 > processed.csv
接下来,加载psql并输入:

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

可能是在windows上安装了重复的Python,因此您可以使用我的Python脚本。哦,您仍然需要将csv文件传输到Python脚本。如果您还没有安装Powershell、Cygwin、Babun或Gow,我建议您这样做。一旦你这样做了,打开更好的shell并运行命令。如果我不想安装任何新的东西,有办法吗?实际上不需要预处理文件。可以直接从程序“cat/path/to/file.csv | cut-d”\t“1,3”复制。