Spec-Zone.ru › MariaDB

mariadb-conv

MariaDB, начиная с 10.5.1

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
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API