メインコンテンツへスキップ
メインコンテンツへスキップ

CSV

説明

コンマ区切り値(Comma Separated Values)形式(RFC)。 フォーマット時、行は二重引用符で囲まれます。文字列中の二重引用符は、連続した 2 つの二重引用符として出力されます。 文字のエスケープに関するその他のルールはありません。

  • 日付および日時は二重引用符で囲まれます。
  • 数値は引用符なしで出力されます。
  • 値は区切り文字で区切られ、デフォルトでは , が使用されます。区切り文字は設定 format_csv_delimiter で定義されます。
  • 行は Unix の改行文字(LF)で区切られます。
  • 配列は CSV では次のようにシリアライズされます:
    • まず、配列を TabSeparated 形式と同様に文字列へシリアライズします。
    • 得られた文字列を CSV では二重引用符で囲んで出力します。
  • CSV 形式におけるタプルは、個別のカラムとしてシリアライズされます(つまり、タプル内でのネスト情報は失われます)。
$ clickhouse-client --format_csv_delimiter="|" --query="INSERT INTO test.csv FORMAT CSV" < data.csv
注記

デフォルトでは、区切り文字は , です。 詳細は、設定 format_csv_delimiter を参照してください。

パース時、すべての値はクォートあり/なしのどちらでも解釈できます。ダブルクォートとシングルクォートの両方がサポートされています。

行はクォートなしで記述することもできます。この場合、区切り文字または改行文字(CR または LF)までを 1 つの値としてパースします。 ただし、RFC に反しますが、クォートなしの行をパースする場合は、先頭および末尾のスペースとタブは無視されます。 改行コードとしては、Unix (LF)、Windows (CR LF)、Mac OS Classic (CR LF) がサポートされています。

NULL は設定 format_csv_null_representation に従ってフォーマットされます(デフォルト値は \N)。

入力データ内の ENUM 値は、名前または ID として表現できます。 最初に、入力値を ENUM 名と照合しようとします。 照合に失敗し、かつ入力値が数値である場合は、この数値を ENUM ID と照合しようとします。 入力データに ENUM ID のみが含まれている場合は、ENUM のパースを最適化するために、設定 input_format_csv_enum_as_number を有効にすることを推奨します。

使用例

フォーマット設定

Setting説明デフォルト備考
format_csv_delimiterCSV データで区切り文字として扱う文字。,
format_csv_allow_single_quotes文字列で単一引用符(シングルクォート)の使用を許可する。true
format_csv_allow_double_quotes文字列で二重引用符(ダブルクォート)の使用を許可する。true
format_csv_null_representationCSV フォーマットにおける NULL のカスタム表現。\N
input_format_csv_empty_as_defaultCSV 入力で空フィールドをデフォルト値として扱う。true複雑なデフォルト式を使用する場合は、input_format_defaults_for_omitted_fields も有効にする必要がある。
input_format_csv_enum_as_numberCSV フォーマットで挿入された Enum 値を Enum のインデックスとして扱う。false
input_format_csv_use_best_effort_in_schema_inferenceCSV フォーマットでスキーマ推論を行う際に、各種調整とヒューリスティックを用いて推論精度を高める。無効な場合、すべてのフィールドは String として推論される。true
input_format_csv_arrays_as_nested_csvCSV から Array を読み取る際、その要素がネストされた CSV としてシリアライズされ、その結果が文字列に格納されていることを前提とする。false
output_format_csv_crlf_end_of_linetrue に設定すると、CSV 出力の行末は \n ではなく \r\n になる。false
input_format_csv_skip_first_linesデータの先頭から指定した行数をスキップする。0
input_format_csv_detect_headerCSV フォーマットで、名前および型を含むヘッダー行を自動検出する。true
input_format_csv_skip_trailing_empty_linesデータ末尾の空行をスキップする。false
input_format_csv_trim_whitespaces引用符で囲まれていない CSV 文字列内の空白およびタブをトリムする。true
input_format_csv_allow_whitespace_or_tab_as_delimiterCSV 文字列でフィールド区切りとして空白またはタブを使用できるようにする。false
input_format_csv_allow_variable_number_of_columnsCSV フォーマットで可変数のカラム数を許可し、余分なカラムは無視し、欠損しているカラムにはデフォルト値を使用する。false
input_format_csv_use_default_on_bad_valuesCSV フィールドのデシリアライズが不正な値で失敗した場合に、そのカラムにデフォルト値を設定できるようにする。false
input_format_csv_try_infer_numbers_from_stringsスキーマ推論時に、文字列フィールドから数値型を推論しようとする。false