Я переношу базу данных физического хоста MySQL 5.5 в базу данных MySQL 5.6 AWS Aurora. Я заметил, что когда данные записываются в файл с использованием INTO OUTFILE
, 5.5 записывает значение NULL
как '\N'
и пустую строку как ''
. Тем не менее, 5.6 записывает как пустую строку, так и NULL как ''
.MySQL 5.6, как экспортировать NULL as N?
Запрос
SELECT * FROM $databasename.$tablename INTO OUTFILE $filename CHARACTER SET utf8 FIELDS ESCAPED BY '\\\\' TERMINATED BY $delimiter;
я нашел официальные документы об этом:
https://dev.mysql.com/doc/refman/5.6/en/load-data.html
В формате с фиксированной строки (который используется, когда ПОЛЯ TERMINATED BY и ПОЛЯ ENCLOSED BY оба пустые), NULL записывается как пустая строка . Это приводит к тому, что значения NULL и пустые строки в таблице равны , если они записаны в файл, потому что оба они записаны как пустые строки. Если вам нужно будет рассказать обо всем, когда , прочитав этот файл, вы не должны использовать формат фиксированной строки.
Как я могу экспортировать NULL
как '\N'
?
Вы уверены, что не имеете в виду '\ N' для' null' (без '' '')? Это будет поведение по умолчанию для 5.5 и 5.6, а для случая в вашей цитате из документации оно будет пустым и для 5.5, и для 5.6. Вы случайно использовали другой разделитель '$? Если он пуст, он будет генерировать «ничего» как для «null», так и для «», как указано в цитате. Вы получили '' \ N'' в файле или в своей базе данных после того, как вы его повторно импортировали (и, возможно, повторно его повторно), то вы можете импортировать его неправильно. – Solarflare