9

COPY我对PostgreSQL 中的命令有疑问。我有一个 CSV 文件,我只想将一些列值复制到我的 PostgreSQL 表中。

是否有可能做到这一点?我熟悉使用COPY命令将所有数据从 CSV 复制到表中,使用标题映射到列名,但是当我只想要一些列时,这怎么可能呢?

4

2 回答 2

9

要么预处理 CSV 文件,要么(我可能会做的)导入到目标表的临时副本中,并且INSERT在第二步中只选择列:

CREATE TEMP TABLE tmp AS SELECT * FROM target_table LIMIT 0;
ALTER TABLE tmp ADD COLUMN etra_column1 text
             ,  ADD COLUMN etra_column2 text;  -- add excess columns
COPY tmp FROM '/path/tp/file.csv';

INSERT INTO target_table (col1, col2, col3)
SELECT col1, col2, col3 FROM tmp  -- only reelvant columns
WHERE  ...  -- optional, to also filter rows

会话结束时会自动删除一个临时表。如果处理时间较长,请使用常规表。

于 2013-03-29T17:20:42.610 回答
3

从程序复制目标表'cut -f1,2,3 -d,/path/tp/file.csv';

于 2018-07-13T16:49:49.933 回答