| Ввод | Вывод | Псевдоним |
|---|---|---|
| ✔ | ✗ |
Описание
Формат Regex разбирает каждую строку импортируемых данных в соответствии с заданным регулярным выражением.
Использование
Регулярное выражение из настройки format_regexp применяется к каждой строке импортируемых данных. Количество подшаблонов в регулярном выражении должно совпадать с количеством столбцов в импортируемом наборе данных.
Строки импортируемых данных должны разделяться символом новой строки '\n' или последовательностью новой строки в стиле DOS "\r\n".
Содержимое каждого совпавшего подшаблона разбирается методом соответствующего типа данных в соответствии с настройкой format_regexp_escaping_rule.
Если регулярное выражение не совпадает со строкой и format_regexp_skip_unmatched установлено значение 1, строка пропускается без уведомления. В противном случае генерируется исключение.
Пример использования
Рассмотрим файл 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:
CREATE TABLE imp_regex_table (id UInt32, array Array(UInt32), string String, date Date) ENGINE = Memory;Мы вставим данные из указанного выше файла в таблицу выше с помощью следующего запроса:
$ 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 разобрал данные из файла:
SELECT * FROM imp_regex_table;┌─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_regexp— String. Содержит регулярное выражение в синтаксисе re2. -
format_regexp_escaping_rule— String. Поддерживаются следующие правила экранирования:- CSV (как в CSV
- JSON (как в JSONEachRow
- Escaped (как в TSV
- Quoted (как в Values
- Raw (извлекает подшаблоны целиком, без правил экранирования, как в TSVRaw
-
format_regexp_skip_unmatched— UInt8. Определяет, следует ли сгенерировать исключение, если выражениеformat_regexpне соответствует импортируемым данным. Можно установить значение0или1.