代码之家  ›  专栏  ›  技术社区  ›  John O

使用Postgres的COPY FROM命令时,我可以硬编码列值吗?

  •  0
  • John O  · 技术社区  · 1 年前

    执行以下语句时:

    COPY table_name(col1, col2) FROM filename;

    是否可以为col1指定一个硬编码值,同时将每一行铲入col2?在文件内部找不到col1的值,但运行该语句的plsql可以使用该值。

    0 回复  |  直到 1 年前
        1
  •  4
  •   Bergi    1 年前

    不在 COPY 命令本身,没有。但在 the documentation 我们发现

    对于 COPY FROM ,文件中的每个字段都会按顺序插入到指定的列中。中未指定表列 复制自 列列表将接收它们的默认值。

    因此,如果您的文件仅包含的值 col2 ,你可以

    ALTER TABLE table_name ALTER COLUMN col1 SET DEFAULT '…';
    COPY table_name(col2) FROM filename;
    

    如果这不适合您的情况,您可以通过一些脚本管道传输文件,将硬编码的值放入postgres读取的流中,也可以使用临时表并根据自己的喜好进行操作。