Skip to main content

Описание

В формате TabSeparated данные записываются построчно. Каждая строка содержит значения, разделённые символами табуляции. После каждого значения ставится символ табуляции, кроме последнего значения в строке, после которого идёт перевод строки. Везде предполагаются только переводы строки в стиле Unix. Последняя строка тоже должна оканчиваться переводом строки. Значения записываются в текстовом формате, без кавычек, а специальные символы экранируются. Этот формат также доступен под именем TSV. Формат TabSeparated удобен для обработки данных с помощью пользовательских программ и скриптов. По умолчанию он используется в HTTP-интерфейсе и в пакетном режиме клиента командной строки. Этот формат также позволяет передавать данные между различными СУБД. Например, можно получить дамп из MySQL и загрузить его в ClickHouse, или наоборот. Формат TabSeparated поддерживает вывод итоговых значений (при использовании WITH TOTALS) и экстремальных значений (когда ‘extremes’ установлено в 1). В этих случаях итоговые и экстремальные значения выводятся после основных данных. Основной результат, итоговые значения и экстремальные значения отделяются друг от друга пустой строкой. Пример:

Форматирование данных

Целые числа записываются в десятичной форме. Числа могут содержать дополнительный символ ”+” в начале (он игнорируется при разборе и не записывается при форматировании). Неотрицательные числа не могут содержать знак минус. При чтении допускается разбирать пустую строку как ноль или (для знаковых типов) строку, состоящую только из знака минус, как ноль. Числа, которые не помещаются в соответствующий тип данных, могут быть разобраны как другое число без сообщения об ошибке. Числа с плавающей запятой записываются в десятичной форме. В качестве десятичного разделителя используется точка. Поддерживаются записи с экспонентой, а также ‘inf’, ‘+inf’, ‘-inf’ и ‘nan’. Запись числа с плавающей запятой может начинаться или заканчиваться десятичной точкой. При форматировании возможна потеря точности для чисел с плавающей запятой. При разборе не требуется строго считывать ближайшее число, представимое машиной. Даты записываются в формате YYYY-MM-DD и разбираются в том же формате, но с любыми символами в качестве разделителей. Дата и время записываются в формате YYYY-MM-DD hh:mm:ss и разбираются в том же формате, но с любыми символами в качестве разделителей. Все это происходит в системном часовом поясе на момент запуска клиента или сервера (в зависимости от того, кто из них форматирует данные). Для даты и времени переход на летнее время не определён. Поэтому, если dump содержит время в период действия летнего времени, dump не будет однозначно соответствовать данным, и при разборе будет выбрано одно из двух значений времени. При чтении некорректные даты и значения даты и времени могут быть разобраны с естественным переполнением или как нулевые даты и время без сообщения об ошибке. В качестве исключения разбор даты и времени также поддерживается в формате Unix-временной метки, если она состоит ровно из 10 десятичных цифр. Результат не зависит от часового пояса. Форматы YYYY-MM-DD hh:mm:ss и NNNNNNNNNN различаются автоматически. Строки выводятся со специальными символами, экранированными обратной косой чертой. Для вывода используются следующие escape-последовательности: \b, \f, \r, \n, \t, \0, \', \\. При разборе также поддерживаются последовательности \a, \v и \xHH (шестнадцатеричные escape-последовательности), а также любые последовательности \c, где c — любой символ (эти последовательности преобразуются в c). Таким образом, чтение данных поддерживает форматы, в которых перевод строки может быть записан как \n, \, или как перевод строки. Например, строка Hello world с переводом строки между словами вместо пробела может быть разобрана в любом из следующих вариантов:
Второй вариант поддерживается, потому что MySQL использует его при записи дампов с разделением табуляцией. Минимальный набор символов, которые необходимо экранировать при передаче данных в формате TabSeparated: табуляция, перевод строки (LF) и обратная косая черта. Экранируется лишь небольшой набор символов. Вы легко можете столкнуться со строковым значением, которое терминал исказит при выводе. Массивы записываются как список значений, разделённых запятыми, в []. Числовые элементы массива форматируются как обычно. Типы Date и DateTime записываются в одинарных кавычках. Строки записываются в одинарных кавычках с теми же правилами экранирования, что и выше. NULL форматируется в соответствии с настройкой format_tsv_null_representation (значение по умолчанию — \N). Во входных данных значения ENUM могут быть представлены как именами, так и идентификаторами. Сначала мы пытаемся сопоставить входное значение с именем ENUM. Если это не удаётся и входное значение является числом, мы пытаемся сопоставить это число с идентификатором ENUM. Если входные данные содержат только идентификаторы ENUM, рекомендуется включить настройку input_format_tsv_enum_as_number для оптимизации разбора ENUM. Каждый элемент структур Nested представлен в виде массива. Например:

Пример использования

Вставка данных

Используйте следующий файл в формате TSV с именем football.tsv:
Вставьте данные:

Чтение данных

Прочитайте данные в формате TabSeparated:
Вывод будет в формате с разделителями табуляции:

Настройки формата

Последнее изменение 23 июля 2026 г.