Как обрабатывать значения NULL в инструкции mysql SELECT … OUTFILE в сочетании с FIELDS ESCAPED BY? Значения NULL в настоящее время усекаются

Я сталкиваюсь с некоторыми трудностями с использованием SELECT … OUTFILE MySQL в наборах результатов, которые включают как нулевые значения, так и столбцы, которые требуют двойного кавычки (т. Е. Столбцы, содержащие символы «). Это синтаксис outfile, который я использую:

INTO OUTFILE '$csv_file' FIELDS ESCAPED BY '""' TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' 

Моя проблема связана с частью запроса FIELDS ESCAPED BY – если эта часть опущена, то нулевые значения будут экспортироваться правильно (…, «\ N», … это то, что похоже на csv).

Однако столбцы, содержащие двойные кавычки, будут разделены на несколько строк / столбцов в excel. Это связано с тем, что для excel требуется, чтобы символы «» внутри столбцов были экранированы, написав их как «» «».

Включение предложения FIELDS ESCAPED BY устраняет проблему excel с столбцами, содержащими символы двойной кавычки, однако он разбивает столбцы NULL. Столбцы NULL экспортируются как (… "N, …), отсутствующие как обратная косая черта, так и следящая кавычка в столбце. В excel это приводит к краху нескольких столбцов из-за отсутствия закрывающейся цитаты.

Моя цель состоит в том, чтобы иметь возможность экспортировать столбцы, содержащие двойные кавычки и новые строки, а также экспортировать нулевые столбцы как \ N, однако я не могу понять, как это сделать. В MySQL docs указано, что FIELDS ESCAPED BY влияет на вывод столбцов NULL, но я не могу понять, как escape-последовательность из «" »'приводит к отбрасыванию обратной косой черты и завершающей кавычки в столбце NULL

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

IFNULL () в столбцах выбора потенциально является опцией, но способ, которым мы используем это в нашем коде, на самом деле довольно сложно реализовать. Это также необходимо сделать для каждого столбца, который потенциально может иметь значения NULL, поэтому это решение, которое я бы хотел избежать, если смогу

Благодаря!

    Попытайтесь использовать функцию coalesce для преобразования столбца, который может быть null для "" http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#function_coalesce

    Я смог успешно сохранить результаты запросов MySQL в CSV и импортировать их в Excel следующим образом:

    1. Используйте форму …

       IFNULL(ColumnA, "" ) AS "Column A", 

    … для каждого столбца или выражения в инструкции SELECT, чем может возвращать NULL (\ N). Это обеспечит, что значения NULL в вашем файле CSV будут отображаться как правильно пронумерованные строки, а не некорректно цитируемые \ N. Вместо пустой строки вы можете указать значение для представления NULL, например ..

      IFNULL(ColumnA, "~NULL~" ) AS "Column A", 
    1. Используйте следующие опции OUTFILE:
     FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"' LINES TERMINATED BY '\r\n'