我正在尝试使用\ COPY命令将文件中的TSV数据加载到Postgres表中。
这是一个示例数据行:
2017-11-22 23:00:00 "{\"id\":123,\"class\":101,\"level\":3}"
这是我正在使用的psql命令:
\COPY bogus.test_table (timestamp, sample_json) FROM '/local/file.txt' DELIMITER E'\t'
这是我收到的错误:
ERROR: invalid input syntax for type json
DETAIL: Token "sample_json" is invalid.
CONTEXT: JSON data, line 1: "{"sample_json...
COPY test_table, line 1, column sample_json: ""{\"id\":123,\"class\":101,\"level\":3}""
我验证了JSON是否采用了正确的JSON格式并阅读了几个类似的问题,但我仍然不确定这里发生了什么。解释会很棒
答案 0 :(得分:5)
按原样加载数据文件:
\COPY bogus.test_table (timestamp, sample_json) FROM '/local/file.txt' CSV DELIMITER E'\t' QUOTE '"' ESCAPE '\'
答案 1 :(得分:1)
引用你的json。它不应该包含"
个字符,字段名称周围的"
字符也不应该被转义。
它应该是这样的:
2017-11-22 23:00:00 {"id":123,"class":101,"level":3}
答案 2 :(得分:1)
Aeblisto的答案几乎可以解决我疯狂的JSON字段的问题,但只需要修改一点-带反斜杠的QUOTE -此处为完整格式:
COPY "your_schema_name.yor_table_name" (your, column_names, here)
FROM STDIN
WITH CSV DELIMITER E'\t' QUOTE E'\b' ESCAPE '\';
--here rows data
\.