| 入力 | 出力 | エイリアス |
|---|---|---|
| ✔ | ✗ |
説明
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 フォーマットを使用する場合は、次の設定を利用できます。