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

时间:2016-04-21 10:35:06

标签: postgresql csv

我在Postgres有一张只有2列的表

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和名称

1 个答案:

答案 0 :(得分:-1)

如果您不介意创建其他表格,可以按照Q / A @Jan Marek指出:https://stackoverflow.com/a/12619903/318174

如果您无法创建额外的表,请执行以下操作:

您需要先删除不需要的列,然后再预处理CSV文件。最简单的方法是使用UNIX cut。

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

如果您的CSV文件需要进行一些转义,您可以在很久以前使用python script I wrote,这与剪切完全相同但尊重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;