2011-09-20 29 views
5

Çalışır mı?PostgreSQL csv bir MySQL csv dışa aktarımından içe aktarılıyor mu?

MySQL ihracat:

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

PostgreSQL: nedense

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

Orada eksik sütunlar. Bu yüzden sınırlayıcıda sorun olduğuna inanıyorum. Doğru muyum, ne yapabilirim? Aşağıdaki nedenle hatayı inceleyebilirim. Ama hangi karakterleri aramalıyım? PostgreSQL içinde

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

Yani çizgi 88.219 de kaçan alıntı ile acı içerir: "... \" postgres bu unquote başarısız gibi ... "görünüyor. Bunun için özel bir seçenek var mı? – FirstTimePoster

cevap

11
  1. kaçış karakterini bilmek gerekir eklemeyi deneyin: ESCAPE '\' Seçime Bağlı '"' çevrelediği
  2. csv için kötü biçimidir O alıntı zorlamak için daha iyi
  3. ..

Tam kodu:

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

Sadece arkadaşımı aradığım şey! –

+0

Yukarıdaki çalışma için ayırıcıdan E '\ t' olarak ayrılmam gerekiyordu – Zabuzzman

0

Standart tırnak karakteri çift tırnak, ama the documentation Herhangi bir tek tek bayt karakter kullanabilirsiniz diyor. @knitti Postgres'e tarafından belirtildiği gibi

ESCAPE '\\'