Преобразование файлов данных из одного формата в другой

Задача
Вы хотите преобразовать файл в другой формат для упрощения работы с ним или чтобы сделать его доступным какой-то другой программе.

Решение
Используйте описанный в разделе сценарий конвертера cvt_file.pl.

Обсуждение
Сценарий mysql_to_text.pl, приведенный в разделе 10.17, использует MySQL как источник данных и формирует вывод в формате, указанном при помощи опций --delim, --quote и --eol. В этом разделе будет описана утилита cvt_file.pl, предоставляющая похожие возможности форматирования не только для вывода, но и для ввода. Она читает данные из файла, а не из MySQL, и преобразует их из одного формата в другой. Например, чтобы прочитать
файл data.txt, элементы которого разделены символами табуляции, преобразовать его в формат значений, разделенных двоеточиями и записать результат в tmp, следует вызвать cvt_file.pl так:

% cvt_file.pl --idelim="\t" --odelim=":" data.txt > tmp

У сценария cvt_file.pl есть отдельные опции для ввода и вывода. То есть в то время как mysql_to_text.pl для указания разделителей столбцов использует опцию --delim, у cvt_file.pl есть две опции --idelim и --odelim для установки разделителей столбцов ввода и вывода.


Но в качестве короткой записи поддерживается и --delim: разделитель столбцов устанавливается как для вывода, так и для ввода. Полный набор опций cvt_file.pl таков:

--idelim=строка, --odelim=строка, --delim=строка
Установить последовательность разделителя столбцов для ввода, вывода или ввода и вывода одновременно. Опция может состоять из одного или нескольких символов.

--iquote=c, --oquote=c, --quote=c
Установить символ заключения столбца в кавычки для ввода, вывода или ввода и вывода одновременно.--ieol=строка, --oeol=строка, --eol=строка Установить последовательность конца строки для ввода, вывода или ввода и вывода одновременно. Опция может состоять из одного или нескольких символов.

--iformat=формат, --oformat=формат, --format=формат,
Указать формат ввода, вывода или ввода и вывода одновременно. Эта опция является краткой записью установки значений кавычки и разделителя. Например, --iformat=csv устанавливает символы кавычки и разделителя ввода в двойные кавычки и запятую, а --iformat=tab указывает формат «без кавычек» с символом табуляции в качестве разделителя.

--ilabels, --olabels, --labels
Ожидать первую строку заголовков столбцов во вводе, записывать первую строку с заголовками столбцов при выводе или делать и то и другое.


Если вы не считываете заголовки из ввода, но требуете их присутствия в выводе, cvt_file.pl использует заголовки c1, c2 и т. д.

Формат файла, ожидаемый cvt_file.pl по умолчанию, совпадает с форматом по умолчанию для предложений LOAD DATA и SELECT INTO ... OUTFILE, то есть разделители – символы табуляции, признак конца строки – символ перевода строки.

Сценарий cvt_file.pl включен в каталог transfer дистрибутива recipes. Если вы предполагаете регулярно его использовать, то следует установить его в каком-то из каталогов, имя которого указано в пути поиска, чтобы сценарий можно было вызывать откуда угодно. Большая часть исходного текста сценария похожа на mysql_to_text.pl, поэтому вместо того чтобы показывать вам код и рассказывать, как он работает, я просто приведу несколько примеров его использования:

• Читаем файл в формате CSV с парой CRLF в качестве признака конца строки, пишем элементы, разделенные символами табуляции, строки завершаются символом перевода строки:

% cvt_file.pl --iformat=csv --ieol="\r\n" --oformat=tab --oeol="\n" \
data.txt > tmp

• Читаем и пишем формат CSV, преобразуя завершающую строки пару CRLF в символ возврата каретки:

% cvt_file.pl --format=csv --ieol="\r\n" --oeol="\r" data.txt > tmp

• Создаем файл элементов, разделенных символами табуляции, из файла /etc/passwd с разделителями – символами двоеточия:

% cvt_file.pl --idelim=":" /etc/passwd > tmp

• Преобразуем в формат CSV вывод запроса из mysql, элементы которого разделены символами табуляции:

% mysql -e "SELECT * FROM profile" cookbook \
| cvt_file.pl --oformat=csv > profile.csv.



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

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

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