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

Описание

Формат Regex разбирает каждую строку импортируемых данных в соответствии с заданным регулярным выражением. Использование Регулярное выражение из настройки format_regexp применяется к каждой строке импортируемых данных. Количество подшаблонов в регулярном выражении должно совпадать с количеством столбцов в импортируемом наборе данных. Строки импортируемых данных должны разделяться символом новой строки '\n' или последовательностью новой строки в стиле DOS "\r\n". Содержимое каждого совпавшего подшаблона разбирается методом соответствующего типа данных в соответствии с настройкой format_regexp_escaping_rule. Если регулярное выражение не совпадает со строкой и format_regexp_skip_unmatched установлено значение 1, строка пропускается без уведомления. В противном случае генерируется исключение.

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

Рассмотрим файл data.tsv:
data.tsv
id: 1 array: [1,2,3] string: str1 date: 2020-01-01
id: 2 array: [1,2,3] string: str2 date: 2020-01-02
id: 3 array: [1,2,3] string: str3 date: 2020-01-03
и таблица imp_regex_table:
Query
CREATE TABLE imp_regex_table (id UInt32, array Array(UInt32), string String, date Date) ENGINE = Memory;
Мы вставим данные из указанного выше файла в таблицу выше с помощью следующего запроса:
Query
$ cat data.tsv | clickhouse-client  --query "INSERT INTO imp_regex_table SETTINGS format_regexp='id: (.+?) array: (.+?) string: (.+?) date: (.+?)', format_regexp_escaping_rule='Escaped', format_regexp_skip_unmatched=0 FORMAT Regexp;"
Теперь мы можем выполнить SELECT из таблицы, чтобы увидеть, как формат Regex разобрал данные из файла:
Query
SELECT * FROM imp_regex_table;
Response
┌─id─┬─array───┬─string─┬───────date─┐
│  1 │ [1,2,3] │ str1   │ 2020-01-01 │
│  2 │ [1,2,3] │ str2   │ 2020-01-02 │
│  3 │ [1,2,3] │ str3   │ 2020-01-03 │
└────┴─────────┴────────┴────────────┘

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

При работе с форматом Regexp можно использовать следующие настройки:
  • format_regexpString. Содержит регулярное выражение в синтаксисе re2.
  • format_regexp_escaping_ruleString. Поддерживаются следующие правила экранирования:
    • CSV (как в CSV
    • JSON (как в JSONEachRow
    • Escaped (как в TSV
    • Quoted (как в Values
    • Raw (извлекает подшаблоны целиком, без правил экранирования, как в TSVRaw
  • format_regexp_skip_unmatchedUInt8. Определяет, следует ли сгенерировать исключение, если выражение format_regexp не соответствует импортируемым данным. Можно установить значение 0 или 1.
Последнее изменение 10 июня 2026 г.