代码之家  ›  专栏  ›  技术社区  ›  Chris Kessel

使用COPY但是表有额外的列?

  •  1
  • Chris Kessel  · 技术社区  · 4 年前

    我有一个供应商的CSV文件。我想把它复制到一个表中,只是这个表有几个额外的列,我想通过触发器中的派生来填充。相当直接的副本: copy mytable from '/some/file.csv' DELIMITER ',' csv;

    copy命令无法告诉我缺少数据: ERROR: missing data for column "arrival_dates"

    当然,这个列不在原始csv中。有没有办法强迫copy只填写它得到的列?本质上,csv有前18列,然后还有两列我正在通过触发器派生和填充。我试着给表声明中的列指定一个默认值,但是没有用。

    1 回复  |  直到 4 年前
        1
  •  3
  •   Laurenz Albe    4 年前

    那是相当微不足道的。就像 INSERT , COPY 允许您指定输入字段的字段对应的列。

    如果你的桌子有 col1 , col2 , col3 col4

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