繁体   English   中英

错误:在 psql 中使用 COPY FROM PROGRAM 时缺少列数据

[英]ERROR: missing data for column when using COPY FROM PROGRAM in psql

我正在尝试使用 psql 中的下一个命令从 cURL 导入数据:

COPY testtable FROM PROGRAM 'curl https://.....'

这是 URL 中的数据:

[{"date":"20201006T120000Z","uri":"secret","val":"1765.756"},{"date":"20201006T120500Z","uri":"secret","val":"2015.09258 "},{"date":"20201006T121000Z","uri":"secret","val":"2283.0885"}]

但是 psql 返回

错误:“uri”列缺少数据

我尝试将其复制到列为文本和 json 格式的表格上。 还尝试添加(DELIMITER ',')但返回

错误:最后一个预期列之后的额外数据

我觉得问题可能是由数据开头和结尾的“[]”引起的,但我不确定。

这些是我使用的表的定义。

表“public.test_table”

柱子 类型 修饰符
日期 文本 不是 null
乌里 文本
文本

索引:“test_table_pkey”PRIMARY KEY,btree(日期)

表“public.test_table2”

柱子 类型 修饰符
日期 json
乌里 json
json

COPY 仅支持 csv、文本和二进制格式。 它不支持 JSON。 它将作为一个整体将数据导入或导出到 json 字段中或从中导出,但不会组装或解析它们。

您可以使用一行一列的临时表。

create temp table stage(x jsonb);

COPY stage FROM PROGRAM 'curl https://.....';

insert into test_table select f.* from stage,
   jsonb_populate_recordset(null::test_table, x) f;

如果 PostgreSQL 提供了 pg_read_program() function,您可以直接使用它而不是创建阶段表。 但它没有(但你可以在 C 或 plpythonu 或 plperlu 中制作一个)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM