我有一个关于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
会话结束时会自动删除临时表。如果处理时间较长,请使用常规表。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)