メインコンテンツへスキップ
入力出力エイリアス

説明

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_regexpStringre2 フォーマットの正規表現を指定します。
  • format_regexp_escaping_ruleString。次のエスケープ規則をサポートしています。
    • CSV (CSV と同様)
    • JSON (JSONEachRow と同様)
    • Escaped (TSV と同様)
    • Quoted (Values と同様)
    • Raw (サブパターン全体をそのまま抽出します。エスケープ規則はなく、TSVRaw と同様です)
  • format_regexp_skip_unmatchedUInt8format_regexp 式がインポートしたデータに一致しない場合に例外をスローするかどうかを指定します。0 または 1 を設定できます。
最終更新日 2026年6月10日