Удалите "\ N" при выполнении SELECT INTO OUTFILE - PullRequest
4 голосов
/ 07 января 2011

Я делаю SELECT INTO OUTFILE, и он показывает "\ N" для каждого значения NULL.Можно ли как-нибудь сделать это пустым?

Я нахожусь на MySQL.

Ответы [ 2 ]

6 голосов
/ 07 января 2011

Вы можете использовать функцию COALESCE примерно так:

COALESCE(yourfield, '')
0 голосов
/ 12 декабря 2015

Хороший вопрос, и он актуален сегодня, как это было в 2011 году. Для этого я использую хранимую процедуру, которая принимает имя таблицы в качестве аргумента. Впоследствии он преобразует все нулевые значения в пустые строки (''), используя предварительно подготовленный оператор и без курсоров, поскольку курсоры не являются SQL. Я протестировал его с таблицей из 200 столбцов и полученным в результате подготовленным оператором длиной около 15 000 символов:

CREATE DEFINER=`root`@`localhost` PROCEDURE `ExportFixNull`(
   in tblname tinytext)
BEGIN

set @string=concat(
    "Update ",@tblname," set ",
    (
        select group_concat(column_name,"=ifnull(",column_name,",'')")
        from information_schema.columns 
        where table_name=@tblname
    )
    ,";"
 );

prepare s1 from @string;
execute s1;
drop prepare s1;

В основном SQL-файле есть утверждение

SET @@group_concat_max_len = 60000;

, что может иметь решающее значение.

Подробнее (на голландском): http://wiki.devliegendebrigade.nl/SELECT_INTO_OUTFILE_%28MySQL%29

С уважением, Йерун Стромпф

...