将JSON插入包含引号的PostgreSQL中

克里斯·斯特里钦斯基

我正在尝试将JSON文件导入表中。我正在使用这里提到的解决方案:https : //stackoverflow.com/a/33130304/1663462

create temporary table temp_json (values text) on commit drop;
copy temp_json from 'data.json';

select
  values->>'annotations' as annotationstext

from   (
           select json_array_elements(replace(values,'\','\\')::json) as values
           from   temp_json
       ) a;

Json文件的内容是:

{"annotations": "<?xml version=\"1.0\"?>"}

我已验证这是有效的JSON文件。

json文件包含一个\"我认为对以下错误负责的文件

CREATE TABLE
COPY 1
psql:insertJson2.sql:13: ERROR:  invalid input syntax for type json
DETAIL:  Expected "," or "}", but found "1.0".
CONTEXT:  JSON data, line 1: {"annotations": "<?xml version="1.0...

是否还有其他需要转义的字符?

阿贝里斯托

由于copy命令进程使用文本格式的转义('\')字符而没有任何选项,因此有两种导入此类数据的方法。

1)使用外部实用程序通过处理文件copy ... from program,例如使用sed

copy temp_json from program 'sed -e ''s/\\/\\\\/g'' data.json';

它将所有反斜杠替换为加倍的反斜杠,并通过将其转换回单斜杠copy

2)使用csv导入:

copy temp_json from 'data.json' with (format csv, quote '|', delimiter E'\t');

在这里,您应该设置quotedelimiter字符,使其不会出现在文件中的任何位置。

然后使用直接转换:

select values::json->>'annotations' as annotationstext from temp_json;

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用包含单引号的json更新PostgreSQL中的jsonb字段

在PostgreSQL中插入带单引号的文本

将bytea插入到PostgreSQL json类型中

尝试将单引号放入单引号postgresql php中

当字符串包含双引号时,如何将JSON读取到JObject中?

Django python 如何在postgresql中插入包含多个对象的json

使用 JSON 字段将转义的双引号插入 Postgres 表

将JSON对象作为参数插入Python(转义引号)

将引号插入bash中的字符串变量中

如何将JSON数据插入PostgreSQL

将Json数组插入Postgresql时出错

将包含双引号的字符串转换为 json

将LIKE中的单引号插入JDBC准备的语句中

将引号放在JSON数组中

将包含几何的JSON转换为PostgreSQL

psql在字符串中插入带双引号的json

在Spring Boot 2中将包含加引号的字符串的请求正文解析为JSON

将值插入PostgreSQL中的数组列

将数据插入重复值的Postgresql中

Sentry-在引号中包含JSON字段的设置

防止需要在 json 文件中包含键的引号?

将抓取的页面插入数据库,该页面包含MySQL和Java的双引号

PostgreSQL 在 json 中插入动态值

将AST插入引号中,请在不取消引号的情况下结束块

将混合双引号和单引号的文本插入到sql数据库中

成功将JSON数据插入到PostgreSQL查询中,但是输出是意外的

使用clojure.java.jdbc将数据插入到PostgreSQL json列中

当 JSON 包含列表时将 JSON 文件插入 SQL Server

如何在插入中包含select语句的值?(PostgreSQL)