Postgresql
如何在 postgres 複製語句中引用數組以插入 JSON 欄位
我有一些看起來像這樣的數據:
id,bo,c,url 1,"some text here", 22, "[{'id': 'NfKA3', 'u': 'https://somewebsite.com'}]" 2, "more text", 83, "[{'id': 'W3nAl', 'u': 'https://anotherwebsite.com'}]" 3, "even more text", 14, "[{'id': 'CyrMj', 'u': 'https://yetanotherwebsite.com'}]"
我正在嘗試將此數據插入到如下所示的表中:
CREATE TABLE myTable( id integer, body varchar, count, varchar, url JSON );
使用此命令:
\copy mytable FROM 'myData.csv' WITH DELIMITER ',' csv header;
但是,我在使用
url
csv 欄位中的單引號時遇到了問題。我收到這樣的錯誤:ERROR: invalid input syntax for type json DETAIL: Token "'" is invalid. CONTEXT: JSON data, line 1: [{'...
有人可以告訴我建構
\COPY
命令的正確方法,以便能夠url
將 csv 中的欄位作為 JSON 載入嗎?如有必要,我可以在命令行對文件進行一些預處理。
JSON 使用雙引號
"
來分隔鍵和字元串:[{"id": "NfKA3", "u": "https://somewebsite.com"}]
CSV 使用雙引號轉義雙引號的
""
意思"
1,"some text here", 22, "[{""id"": ""NfKA3"", ""u"": ""https://somewebsite.com""}]"
看看:https ://stackoverflow.com/questions/17808511/properly-escape-a-double-quote-in-csv
使用數據庫腳本而不是 csv:
with v (id,bo,c,url) as (values ( 1,'some text here', 22, cast('[{ "id": "NfKA3", "u": "https://somewebsite.com"}]' as json)), ( 2,'some text here', 83, cast('[{ "id": "W3nAl", "u": "https://somewebsite.com"}]' as json)) ) insert into myTable select * from v;