2011-09-20 8 views
5

これは動作しますか?PostgreSQLのcsvは、MySQLのCSVエクスポートからインポートしますか?

MySQLの輸出:

SELECT * INTO OUTFILE 'C:/data.csv' 
FIELDS TERMINATED BY '\t' OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
FROM table; 

は、PostgreSQL:

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' CSV 

何らかの理由で不足している列があります。だから私はデリミタに問題があると信じています。私は正しいです、私は何ができますか?私は以下の原因で行を検査することができます。しかし、私はどのキャラクターを探す必要がありますか? PostgreSQLの

ERROR: missing data for column "Column21" 
CONTEXT: COPY table, line 88219: ... 
+0

だから88219行でエスケープ引用符で刺す含まれています: "... \" ... "PostgresはこれをUNQUOTEに失敗するように思えます。このための特別なオプションはありますか? – FirstTimePoster

答えて

11
  1. は、エスケープ文字を知っている必要があります追加してみてください:ESCAPEを '\' OPTIONALLY ENCLOSED BY '"'
  2. をCSVに悪い形式です。引用強制する方が良いでしょう

全コード:

のMySQL 5.5.15:

SELECT * 
INTO OUTFILE 'C:/data.csv' 
FIELDS TERMINATED BY '\t' ENCLOSED BY '"' ESCAPED BY '\\' 
LINES TERMINATED BY '\n' 
FROM table; 

postgresの9.0.3:

COPY table FROM 'C:/data.csv' WITH DELIMITER AS '\t' NULL AS '\\N' ESCAPE E'\\' CSV 
+0

私の友人を探していただけです! –

+0

上記のようにデリミタをE '\ t'としてエスケープする必要がありました – Zabuzzman

0

デフォルトの引用符文字は、二重引用符ですが、the documentationあなたは、任意の単一の1バイト文字を使用することができ、述べています。 @knittiはpostgresで述べたように

ESCAPE '\\' 
関連する問題