[英]Postgres - import data with double quote
我從csv文件導入制表符分隔的數據時遇到問題,因為數據中出現了雙引號,例如:
→語音“郵件→
我正在使用pgadmin III中的import選項導入數據。 我將制表符指定為定界符,並嘗試使用選項QUOTE和/或ESCAPE。 這些都不起作用。 我知道這是雙引號的問題,因為我從文件中將其刪除並成功導入。 我也知道這個問題已經引起了( 可以用CSV格式在Postgres COPY命令中關閉報價處理嗎? ),但是我不能使用COPY <tablename> FROM <filename>
因為我正在將數據導入到遠程DB和我的PC上文件的相對路徑不被接受。 我想避免修改輸入文件,因為它可能很大。
如果要保留雙引號,請將QUOTE
設置為其他值(我將使用數據文件中不存在的字符)。
示例:(在PostgreSQL 9.6上測試)
創建測試表
CREATE TABLE dialogue (person TEXT, dialogue TEXT);
使用以下示例數據創建一個測試數據文件(制表符分隔)。
# dialogue.txt
jim I ran into your ex. He says "hi"
rachel did he now? well tell him i said "don't call me"
在psql中執行以下命令
\copy dialogue FROM '/path/to/dialogue.txt' WITH CSV QUOTE '$' DELIMITER E'\t';
示例輸出:
etl_db=# \copy dialogue from '~/Desktop/dialogue.txt' WITH CSV DELIMITER E'\t' QUOTE '$';
COPY 2
etl_db=# select * from dialogue;
person | dialogue
--------+--------------------------------------------------
jim | I ran into your ex. He says "hi"
rachel | did he now? well tell him i said "don't call me"
(2 rows)
我正在將數據導入遠程數據庫,並且我的PC上文件的相對路徑不被接受。 我想避免修改輸入文件,因為它可能很大。
將psql命令行客戶端用於postgresql。 它支持\\copy
meta命令,該命令包裝了sql命令COPY
並允許您將記錄從本地計算機流式傳輸到服務器。
我試過了'|' 作為QUOTE,因為我的數據有很多特殊字符,例如:%$ ^&*#我收到此錯誤:錯誤:編碼為“ WIN1252”的字節序列為0x8f的字符在編碼UTF8中沒有等效字符。 我的系統語言環境是:波蘭語(波蘭)
COPY
命令具有一個ENCODING
選項。 您可以使用它來指定文件以utf8或其他編碼進行編碼。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.