Postgresql
將包含 (geo)JSON 元素的列導出到 CSV,同時正確保留 JSON 雙引號
我想使用複製表的 5 列進行導出,其中 3 列包含 ID、文本和時間戳值,但其中 2 列包含 JSON 和 GeoJSON 元素,例如:
// Please, note the non-quoted string Value1 // when there is no space in the value itself: {"key": "value with space", "other_key": Value1, ...}
但是當使用這個命令時:
psql \ -d <connection_uri> \ --command "\copy public.mytable (id, json_array, geojson_field, status, timestamp) TO './file.csv' DELIMITER ';' CSV HEADER ENCODING 'UTF8' QUOTE '\"' ;"
結果看起來很奇怪:
11784,"{'"First value'",'"Second value'", ThirdValue, '"Fourth val'",...
即它以奇怪的順序放置引號:“single-double <field_value> single-double”
(我也沒有得到標題……)
我希望我可以在 csv 文件中以一個真正的 JSON 對象結束,我可以複製/粘貼到驗證器中,例如這裡沒有錯誤。
難道我做錯了什麼?
如果是,如何解決?
PG:13
copy t_jsonb to STDOUT (FORMAT CSV, QUOTE ' ', header true);
我最終以這種方式使用它, using
FORCE_QUOTE
,它實際上通過在需要的 JSON 鍵和值周圍放置 2 個雙引號來工作:psql -d <connection_uri> \ --command "\copy public.mytable (id, json_array, geojson_field, status, timestamp) TO './file.csv' WITH (FORMAT CSV, HEADER TRUE, DELIMITER ';', ENCODING 'UTF8', QUOTE '\"', FORCE_QUOTE (json_array, geojson_field));"