Postgresql 如何使用复制-跳过几列将CSV文件导入postgres?
我在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
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”复制。