Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 错误:在psql中使用“从程序复制”时缺少列的数据_Database_Postgresql_Curl_Psql_Postgresql Copy - Fatal编程技术网

Database 错误:在psql中使用“从程序复制”时缺少列的数据

Database 错误:在psql中使用“从程序复制”时缺少列的数据,database,postgresql,curl,psql,postgresql-copy,Database,Postgresql,Curl,Psql,Postgresql Copy,我正在尝试使用psql中的下一个命令从cURL导入数据: 从程序“curl”复制测试表https://.....“ 这是URL中的数据: [{“日期”:“20201006T120000Z”,“uri”:“机密”,“val”:“1765.756”},{“日期”:“20201006T120500Z”,“uri”:“机密”,“val”:“2015.09258”},{“日期”:“20201006T121000Z”,“uri”:“机密”,“val”:“2283.0885”}] 但是psql返回了 错误:“

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

从程序“curl”复制测试表https://.....“

这是URL中的数据:

[{“日期”:“20201006T120000Z”,“uri”:“机密”,“val”:“1765.756”},{“日期”:“20201006T120500Z”,“uri”:“机密”,“val”:“2015.09258”},{“日期”:“20201006T121000Z”,“uri”:“机密”,“val”:“2283.0885”}]

但是psql返回了

错误:“uri”列缺少数据

我尝试在列为文本和json格式的表上复制它。还尝试添加
(分隔符',')
,但返回

错误:上一个预期列之后有额外数据

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

这些是我使用的表的定义

表“public.test_表”

纵队 类型 修饰语 日期 文本 非空 uri 文本 瓦尔 文本
复制仅支持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()函数,您可以直接使用它,而不是创建一个stage表。但是它没有(但是你可以用C,或者plpythonu或者plperlu制作一个)

test_table的定义是什么?@jjanes我刚刚编辑了这篇文章并添加了所用表的定义。