COPY
我对PostgreSQL 中的命令有疑问。我有一个 CSV 文件,我只想将一些列值复制到我的 PostgreSQL 表中。
是否有可能做到这一点?我熟悉使用COPY
命令将所有数据从 CSV 复制到表中,使用标题映射到列名,但是当我只想要一些列时,这怎么可能呢?
COPY
我对PostgreSQL 中的命令有疑问。我有一个 CSV 文件,我只想将一些列值复制到我的 PostgreSQL 表中。
是否有可能做到这一点?我熟悉使用COPY
命令将所有数据从 CSV 复制到表中,使用标题映射到列名,但是当我只想要一些列时,这怎么可能呢?
要么预处理 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
会话结束时会自动删除一个临时表。如果处理时间较长,请使用常规表。
从程序复制目标表'cut -f1,2,3 -d,/path/tp/file.csv';