我正在嘗試將文本陣列和 hstore 值從 CSV(實際上是 TSV)電子表格匯入 Postgres,但我不斷收到這兩個錯誤的倍數:
ERROR: Syntax error near '}' at position 667
ERROR: malformed array literal: "" Detail: Array value must start with "{" or dimension information.
我的文本陣列如下所示: {hello, world}
我的 hstore 值如下所示: {"hello" => "world", "goodbye" => "world"}
我沒有使用該COPY命令,而是通過我的 IDE (Goland) 資料庫導航器或 Postico 2 匯入檔案。 CSV 或 TSV 電子表格中用于匯入 Postgres 的陣列和 hstore 資料的正確語法是什么?
uj5u.com熱心網友回復:
您必須在文本陣列中雙引號您的字串值 : {"hello", "world"}。如果這個欄位已經在你的 csv/tsv 檔案中"{hello, world}"被雙引號,那么你必須轉義里面的雙引號,例如:"{\"hello\", \"world\"}"如果你的轉義字符是\在 Postgres 中匯入 csv/tsv 檔案時。使用COPY 時,您可以指定所需的轉義字符,使用替代解決方案時,我不知道。
uj5u.com熱心網友回復:
好的,所以對于任何需要將陣列和 hstore 資料匯入 Postgres 的人來說,這與我的情況類似(電子表格匯出為 TSV,然后通過 IDE 匯入),這對我有用。
對于我的文本陣列,我需要將它們括在大括號中,并且僅對其中包含空格的陣列條目使用雙引號。不需要轉義字符或雙引號。
示例:{foo,"bar baz",qux}
對于我的hstore values,不需要大括號,但需要對帶空格的鍵或值使用雙引號(AFAIK):
示例:foo=>bar,baz=>"qux quuz"
我不知道它是否有任何區別,但我消除了除引號內的空格之外的所有空格(例如,逗號和 => 周圍)。此外,對于可以具有空值的陣列列,這些列中的任何單元格都將為空,您必須在單元格(即 {})中有一個空陣列才能正確匯入。
我還沒有嘗試用我的應用程式檢索這些值,但由于它們現在在我的電子表格中,它們匯入時不會出錯。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/349625.html
標籤:PostgreSQL 文件 商店 戈兰 邮局
