2011-09-20 15 views
5

क्या यह काम करेगा?एक MySQL सीएसवी निर्यात से PostgreSQL सीएसवी आयात?

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

तो 88,219 पर लाइन बच गए उद्धरण के साथ डंक होते हैं: "... \" ... "लगता है postgres इस गंदें शब्द बोलना करने में विफल रहते हैं। क्या इसके लिए कोई विशेष विकल्प है? – FirstTimePoster

उत्तर

11
  1. @knitti postgres ने उल्लेख किया एस्केप वर्ण पता करने की जरूरत का प्रयास करें: ESCAPE '\'
  2. वैकल्पिक रूप से '' 'संलग्न सीएसवी के लिए बुरा प्रारूप है यह हवाले से मजबूर करने के लिए बेहतर है
  3. ।।

पूर्ण कोड:

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

मुझे उपरोक्त काम करने के लिए डेलिमीटर से ई '\ t' के रूप में बचने की आवश्यकता है – Zabuzzman

0

डिफ़ॉल्ट उद्धरण कैरेक्टर दोहरे-उद्धरण है, लेकिन the documentation कहते हैं, आप किसी भी एक एक-बाइट-वर्ण का उपयोग कर सकते हैं। जोड़ने

ESCAPE '\\' 
संबंधित मुद्दे