Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

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 для типов gzip, deflate и lz4, 1-22 для типа zstd и 1-9 для остальных типов сжатия. Для gzip и deflate уровни выше 9 требуют сборки по умолчанию с libdeflate; сборка без libdeflate поддерживает уровни 1-9.

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

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

Пример

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

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