CSV

2014-06-16 6 views
8

पर MYSQL तालिकाओं को निर्यात करते समय शून्य फ़ील्ड को कैसे संभालें, जब मैं CSV फ़ाइलों में MYSQL तालिकाओं को निर्यात करता हूं, तो मुझे अपेक्षित डेटाबेस में NULL फ़ील्ड के लिए \ N मिल रहा है। सीएसवी को टेबल निर्यात करते समय \ N आउटपुट को केवल खाली स्ट्रिंग में बदलने का कोई तरीका है?CSV

धन्यवाद

SELECT 'CU_CustomerID','CU_UserName','CU_Password','CU_Email','CU_Company','CU_Comment','CU_LastBasket','CON_FirstName','CON_MiddleI','CON_LastName','CON_Address1','CON_Address2','CON_City','CON_State','CON_Province','CON_Country','CON_Zip','CON_Phone1','CON_Phone2' 
UNION 
SELECT T1.CU_CustomerID,T1.CU_UserName,T1.CU_Password,T1.CU_Email,T1.CU_Company,T1.CU_Comment,T1.CU_ShopperPoints,T2.CON_FirstName,T2.CON_MiddleI,T2.CON_LastName,T2.CON_Address1,T2.CON_Address2,T2.CON_City,T2.CON_State,T2.CON_Province,T2.CON_Country,T2.CON_Zip,T2.CON_Phone1,T2.CON_Phone2 
FROM CUSTOMERS AS T1 
INNER JOIN CONTACT AS T2 ON T1.CU_CustomerID = T2.CON_CustomerID 
WHERE T1.CU_CustomerID BETWEEN 0 AND 1000 
INTO OUTFILE 'customers.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 

उत्तर

8

MySQL documentation से

तो मैदान चरित्र सहायता से निकले खाली है, कोई वर्ण बच गए हैं और शून्य शून्य के रूप में उत्पादन, \ n नहीं है। संभवतः एक खाली बचने वाला चरित्र निर्दिष्ट करने का अच्छा विचार नहीं है, विशेष रूप से यदि आपके डेटा में फ़ील्ड मानों को केवल सूची में वर्णों में से कोई भी शामिल है।

+0

तो मेरे मामले में, मैं नल फ़ील्ड को \ N के बजाय तारों को खाली करने के लिए कैसे आउटपुट करूंगा? सटीक क्वेरी क्या है? धन्यवाद – user2700690

+0

@ user2700690 कृपया अपना वक्तव्य जोड़ें, फिर मैं इसे सही कर सकता हूं। – Jens

+0

क्वेरी जोड़ा गया। धन्यवाद – user2700690

1

बस मामले में। टाइपिंग से बचने के लिए "ifnull (वर, '') वर के रूप में" हर एक चर एक का उपयोग कर सकते हैं इस के लिए:

SELECT GROUP_CONCAT(CONCAT("IFNULL(",COLUMN_NAME,",'') AS ", COLUMN_NAME)) 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = '<table name>' 
AND TABLE_SCHEMA = '<schema name>' 
ORDER BY ORDINAL_POSITION 
0

Hardway: -

 
SELECT 'CU_CustomerID','CU_UserName','CU_Password','CU_Email','CU_Company','CU_Comment','CU_LastBasket','CON_FirstName','CON_MiddleI','CON_LastName','CON_Address1','CON_Address2','CON_City','CON_State','CON_Province','CON_Country','CON_Zip','CON_Phone1','CON_Phone2' 
UNION 
SELECT COALESCE(T1.CU_CustomerID,''),COALESCE(T1.CU_UserName,''),COALESCE(T1.CU_Password,''),COALESCE(T1.CU_Email,''),COALESCE(T1.CU_Company,''),COALESCE(T1.CU_Comment,''),COALESCE(T1.CU_ShopperPoints,''),COALESCE(T2.CON_FirstName,''),COALESCE(T2.CON_MiddleI,''),COALESCE(T2.CON_LastName,''),COALESCE(T2.CON_Address1,''),COALESCE(T2.CON_Address2,''),COALESCE(T2.CON_City,''),COALESCE(T2.CON_State,''),COALESCE(T2.CON_Province,''),COALESCE(T2.CON_Country,''),COALESCE(T2.CON_Zip,''),COALESCE(T2.CON_Phone1,''),COALESCE(T2.CON_Phone2,'') 
FROM CUSTOMERS AS T1 
INNER JOIN CONTACT AS T2 ON T1.CU_CustomerID = T2.CON_CustomerID 
WHERE T1.CU_CustomerID BETWEEN 0 AND 1000 
INTO OUTFILE 'customers.csv' 
FIELDS TERMINATED BY ',' 
ENCLOSED BY '"' 

यह एक रिक्त स्ट्रिंग पर सभी मूल्यों लागू हो जाएगी न्यूल ('\ N') के बजाए।