使用Postgres上的静态字段从CSV复制

时间:2016-10-19 12:35:17

标签: node.js postgresql csv postgresql-9.5

我想将实际系统从CSV文件切换到PostgreSQL 9.5数据库,转换为更高效的系统。

由于其良好的性能,我想使用COPY声明。问题是我需要填充一个不在CSV文件中的字段。

有没有办法让COPY语句为插入的所有行添加静态字段? 完美的解决方案看起来像这样:

COPY data(field1, field2, field3='Account-005') 
FROM '/tmp/Account-005.csv' 
WITH DELIMITER ',' CSV HEADER;

您是否知道如何在每一行填充该字段?

我的服务器正在运行node.js所以我愿意接受任何具有成本效益的解决方案,以便在复制之前使用节点完成文件。

2 个答案:

答案 0 :(得分:0)

设置列的默认值:

alter table data 
alter column field3 set default 'Account-005'

不要提及copy命令:

COPY data(field1, field2) FROM...

答案 1 :(得分:0)

使用临时表导入。这允许您:

  • 添加/删除/更新列
  • 添加额外的文字数据
  • 删除或忽略记录(例如重复)

,然后将新记录插入实际表格。

LEFT OUTER JOIN

BTW可以自动执行上述操作:将文件名/文字作为参数放入函数(或准备语句)中。