mariadb-conv
mariadb-conv — это утилита преобразования наборов символов для MariaDB, добавленная в MariaDB 10.5.1.
Использование
mariadb-conv [OPTION...] [FILE...]
Параметры
mariadb-conv поддерживает следующие параметры:
| Параметр | Описание |
|---|---|
| -f, --from=name | Указывает кодировку входных данных. |
| -t, --to=name | Указывает кодировку выходных данных. |
| -c, --continue | Безмолвно игнорирует ошибки преобразования. |
| --delimiter=name | Считает указанные символы разделителями. |
По умолчанию, mariadb-conv завершается при обнаружении проблем с преобразованием, например:
- последовательность входных байтов недействительна в исходном наборе символов
- символ не может быть преобразован в целевой набор символов
Параметр -c позволяет mariadb-conv игнорировать такие ошибки и использовать знак вопроса '?' для замены байтов в некорректных последовательностях или не преобразуемых символов.
Параметр --delimiter=... позволяет mariadb-conv рассматривать указанные символы как разделители, а не данные для преобразования, поэтому входные данные обрабатываются как комбинация:
- кусков данных, которые преобразуются в соответствии с параметрами
-fи-t. - разделителей, которые не преобразуются и копируются из входных данных в выходные данные в неизменном виде.
Примеры
Преобразует файл file.latin1.txt из latin1 в utf8.
mariadb-conv -f latin1 -t utf8 file.latin1.txt
Преобразует файл file.latin1.txt из latin1 в utf8, считывая входные данные со стандартного ввода.
mariadb-conv -f latin1 -t utf8 < file.latin1.txt
Использование mariadb-conv в конвейере:
echo test | ./mariadb-conv -f utf8 -t ucs2 >file.ucs2.txt
В качестве побочного эффекта, mariadb-conv может использоваться для вывода списка каталогов данных MariaDB в удобочитаемом формате. Предположим, что вы создаёте следующие таблицы:
SET NAMES utf8; CREATE OR REPLACE TABLE t1 (a INT); CREATE OR REPLACE TABLE ß (a INT); CREATE OR REPLACE TABLE абв (a INT); CREATE OR REPLACE TABLE 桌子 (a INT);
Вышеуказанные действия заставляют сервер создать следующие файлы в каталоге данных MariaDB:
@1j.frm @1j.ibd @684c@5b50.frm @684c@5b50.ibd @g0@h0@i0.frm @g0@h0@i0.ibd t1.frm t1.ibd
Точно определить, какой файл хранит какую таблицу, не совсем очевидно, так как MariaDB использует специальное кодирование имён таблиц в именах файлов.
Эта команда в Linux (предполагается консоль UTF-8) может вывести список таблиц в удобочитаемом виде::
ls | mariadb-conv -f filename -t utf8 --delimiter=".\n" ß.frm ß.ibd 桌子.frm 桌子.ibd абв.frm абв.ibd t1.frm t1.ibd
Обратите внимание, что параметр --delimiter=".\n" необходим для того, чтобы mariadb-conv рассматривал точку (разделяющую закодированное имя таблицы и расширение файла) и символ новой строки (разделяющий отдельные строки) как разделители, а не как данные для преобразования (иначе преобразование завершится ошибкой).
Пользователи Windows могут использовать следующую команду для вывода списка каталога данных в консоли ANSI текста:
dir /b | mariadb-conv -c -f filename -t cp850 --delimiter=".\r\n"
Примечание:
- Параметры
-tпредполагают использование западного компьютера. - Параметр
-cнеобходим для игнорирования ошибок преобразования для кириллицы и символов CJK. -
--delimiter=дополнительно требует символа возврата каретки \r
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/mariadb-conv/