Перейти к основному содержанию
Перейти к основному содержанию

Оператор INTO OUTFILE

Оператор INTO OUTFILE перенаправляет результат запроса SELECT в файл на стороне клиента.

Поддерживаются сжатые файлы. Тип сжатия определяется по расширению имени файла (по умолчанию используется режим 'auto'), либо может быть явно задан оператором COMPRESSION. Уровень сжатия для выбранного типа может быть указан оператором LEVEL.

Синтаксис

SELECT <expr_list> INTO OUTFILE file_name [AND STDOUT] [APPEND | TRUNCATE] [COMPRESSION type [LEVEL level]]

file_name и type — строковые литералы. Поддерживаемые типы сжатия: 'none', 'gzip', 'deflate', 'br', 'xz', 'zstd', 'lz4', 'bz2'.

level — числовой литерал. Поддерживаются положительные целые числа в следующих диапазонах: 1-12 для lz4, 1-22 для zstd и 1-9 для остальных типов сжатия.

Подробности реализации

  • Эта функциональность доступна в клиенте командной строки и clickhouse-local. Поэтому запрос, отправленный через HTTP-интерфейс, завершится с ошибкой.
  • Запрос завершится с ошибкой, если файл с тем же именем уже существует.
  • Формат вывода по умолчанию — TabSeparated (как в пакетном режиме клиента командной строки). Используйте раздел FORMAT, чтобы изменить его.
  • Если в запросе указано AND STDOUT, то вывод, записываемый в файл, также отображается в стандартный поток вывода. При использовании сжатия в стандартный поток вывода выводится несжатый текст.
  • Если в запросе указано APPEND, то вывод дописывается в существующий файл. При использовании сжатия APPEND применять нельзя.
  • При записи в уже существующий файл необходимо использовать APPEND или TRUNCATE.

Пример

Выполните следующий запрос с помощью клиента командной строки:

clickhouse-client --query="SELECT 1,'ABC' INTO OUTFILE 'select.gz' FORMAT CSV;"
zcat select.gz 

Результат:

1,"ABC"