【问题标题】:How to import JSON file in PostgreSQL: COPY 1如何在 PostgreSQL 中导入 JSON 文件:COPY 1
【发布时间】:2020-07-31 01:19:51
【问题描述】:

我是 PostgreSQL 的新手。我正在尝试将 JSON 文件导入 PostgreSQL 表。我创建了一个空表:

covid19=# CREATE TABLE temp_cov(
covid19(# data jsonb
covid19(# );

并尝试使用命令行中的以下命令从该表中的 JSON 复制我的数据:

cat output.json | psql -h localhost -p 5432 covid19 -U postgres -c "COPY temp_cov (data) FROM STDIN;" 

输出只是“COPY 1”,当我在 psql 中打开我的表时

SELECT * FROM temp_cov;

但是这个命令没有结束并且有这个输出。

很遗憾,我找不到答案或类似的问题解决方案。提前感谢您的建议。

另外,我的 json 文件已经被修改为“不漂亮”的形式,它有超过 11k 行。

【问题讨论】:

  • 你的 json 文件是否以换行符结尾?
  • 看看dba.stackexchange.com/questions/8172/…dba.stackexchange.com/questions/1742/…。您可能可以为 JSON 做类似的事情。您还可以将\lo_importpsql 一起使用。
  • 这能回答你的问题吗? How can I import a JSON file into PostgreSQL?
  • @Bergi 不,我的 json 文件没有以换行符结尾。它也不应该,不是吗?感谢您的帮助!我已经尝试了 1000 种方法,并且会查看您发送的链接!
  • 是的,你是对的,它不需要换行符,只是文件结尾。从this answer 来看,您的方法应该有效,并且输出COPY 1 表明插入了一行。为什么之后会空出来我不知道。

标签: json postgresql psql


【解决方案1】:

您的数据在那里。 psql 正在将行发送到寻呼机(可能是more?),并且寻呼机无法很好地处理它,因为它太大了。您可以关闭寻呼机(psql 内的\pset pager off)或将寻呼机设置为更好的程序(PAGER=less 或 PSQL_PAGER=less 作为环境变量),但实际上这些都对查看巨型 JSON 没有那么有用数据。

您在 PostgreSQL 中有数据,现在您想用它做什么?仅仅在 psql 的寻呼机中查看它不太可能是有趣的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-04
    • 2013-08-27
    • 1970-01-01
    • 2021-05-22
    相关资源
    最近更新 更多