Как обрабатывать пустое поле при экспорте таблиц MYSQL в CSV

Прямо сейчас, когда я экспортирую таблицы MYSQL в файлы CSV, я получаю \N для полей NULL в базе данных, что ожидается. Есть ли способ изменить вывод \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  '"'

3 ответа

Решение

Из документации MySQL

Если символ FIELDS ESCAPED BY пуст, символы не экранируются, и NULL выводится как NULL, а не \N. Вероятно, не стоит указывать пустой escape-символ, особенно если значения полей в ваших данных содержат какие-либо символы в только что приведенном списке.

Трудный путь:-

ВЫБЕРИТЕ "CU_CustomerID", "CU_UserName", "CU_Password", "CU_Email", "CU_Company", "CU_Comment", "CU_LastBasket", "CON_FirstName", "CON_MiddleI", "CON_LastNdd" CON1 "," CON2 "," CON1 "," CON2 "," CON1 "," CON2 "," CON1 "," CON2 "," CON1 "," CON2 "," CON1 "," CON2 "," CON1 "," CON2 "," CON1 "," CON1 "," CON1 "," CON1 "," CON1 "," CON_Last_ame "," CON_Last_ame " CON_City','CON_State','CON_Province','CON_Country','CON_Zip','CON_Phone1','CON_Phone2'
UNION
SELECT COALESCE(T1.CU_CustomerID,''),COALESCE(T1.CU_UserName,''),COALES 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,''),COALESCE(T2.CON_Phone2,'') ОТ КЛИЕНТОВ В КАЧЕСТВЕ ВНУТРЕННЕГО КОНТАКТА T1, КАК T2 НА T1.CU_CustomerID = T2.CON_CustomerID, ГДЕ T1.CU_CustomerID МЕЖДУ 0 И 1000 В ПОЛЬЗОВАТЕЛЯХ. ПРЕКРАЩЕНО ',' ЗАКРЫТО ОТ '"'

По умолчанию все значения будут иметь пустую строку, а не NULL ('\N').

У меня тоже была эта проблема, решенная следующим образом:

выберите ifnull(addr,reference, "") КАК reference, data2 из...

Так, на всякий случай. Чтобы не вводить "ifnull(var,'') as var" для каждой переменной, можно использовать это:

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
Другие вопросы по тегам