Postgresql 是否使用“复制”,但表中有额外的列?

Postgresql 是否使用“复制”,但表中有额外的列?,postgresql,Postgresql,我有一个来自供应商的CSV文件。我想把它复制到一个表中,除了这个表有几个额外的列,我想通过触发器中的派生来填充这些列。相当直接的复制:从“/some/file.csv”分隔符“、”csv”复制mytable copy命令无法告诉我缺少数据: 错误:“到达日期”列缺少数据 当然,该列不在原始csv中。有没有一种方法可以强制副本只填充它得到的列?本质上,csv有前18列,然后还有两列我通过触发器派生和填充。我尝试为表声明中的列指定一个默认值,但没有帮助。这相当简单。与插入类似,COPY允许您指定输入

我有一个来自供应商的CSV文件。我想把它复制到一个表中,除了这个表有几个额外的列,我想通过触发器中的派生来填充这些列。相当直接的复制:
从“/some/file.csv”分隔符“、”csv”复制mytable

copy命令无法告诉我缺少数据:
错误:“到达日期”列缺少数据


当然,该列不在原始csv中。有没有一种方法可以强制副本只填充它得到的列?本质上,csv有前18列,然后还有两列我通过触发器派生和填充。我尝试为表声明中的列指定一个默认值,但没有帮助。

这相当简单。与插入类似,
COPY
允许您指定输入字段字段对应的列

如果您的表中有
col1
col2
col3
col4
,但文件不包含第三列,您可以

COPY atable(col1, col2, col4)
FROM '/some/file.csv'
   (FORMAT 'csv', DELIMITER ',');

那是相当微不足道的。与插入类似,
COPY
允许您指定输入字段字段对应的列

如果您的表中有
col1
col2
col3
col4
,但文件不包含第三列,您可以

COPY atable(col1, col2, col4)
FROM '/some/file.csv'
   (FORMAT 'csv', DELIMITER ',');

这适用于psqlSo中的
COPY
\COPY
,如果csv有3列
a、b、c
,而我的表有4列
a、b、c、d
,我可以
从'some/file.cxv'
复制(a、b、c),它将停止抱怨缺少的d列?是的。你可以自己验证。这既适用于psqlSo中的
COPY
,也适用于
\COPY
,如果csv有3列
a、b、c
,而我的表有4列
a、b、c、d
,我可以
从'some/file.cxv'
复制(a、b、c),它就不会再抱怨缺少d列了?是的。你可以自己验证。