Чтение файлов, полученных из разных операционных систем

Задача
В разных операционных системах используются разные последовательности для обозначения конца строки.

Решение
Именно поэтому в предложении LOAD DATA имеется инструкция LINES TERMINATED BY.

Обсуждение
Как правило, последовательность, задающая конец строки в файле, определяется той системой, в которой файл был создан, а не той, в которой он импортируется. Имейте это в виду, когда загружаете файл, полученный из другой операционной системы.

В UNIX строки обычно заканчиваются символом конца строки, который в предложении LOAD DATA можно задать так:

LINES TERMINATED BY '\n'

Однако благодаря тому что \n используется в LOAD DATA по умолчанию, инструкция LINES TERMINATED BY не обязательна, если только вам не требуется явно указать значение разделителя строк.

Файлы, создаваемые в операционных системах Mac OS или Windows, обычно содержат строки, заканчивающиеся символом возврата каретки или парой CRLF. Для работы с такими разделителями используйте соответствующую инструкцию LINES TERMINATED BY:

LINES TERMINATED BY '\r'
LINES TERMINATED BY '\r\n'

Например, для загрузки файла из Windows, содержащего поля, разделенные табуляциями, и строки, заканчивающиеся парой CRLF, используйте такое предложение LOAD DATA:

mysql> LOAD DATA LOCAL INFILE 'mytbl.txt' INTO TABLE mytbl
-> LINES TERMINATED BY '\r\n';

Соответствующий вызов mysqlimport имеет такой вид:

% mysqlimport --local --lines-terminated-by="\r\n" cookbook mytbl.txt

Оцените статью: (0 голосов)
0 5 0

Статьи из раздела MySQL на эту тему:
Диагностическая утилита для LOAD DATA
Извлечение и перестановка столбцов файлов данных
Импорт XML в MySQL
Импорт с помощью LOAD DATA и утилиты mysqlimport
Импорт файлов в формате CSV

Вернуться в раздел: MySQL / 10. Импорт и экспорт данных