Skip to main content

説明

TabSeparatedフォーマットでは、データは行単位で書き込まれます。各行はタブで区切られた値で構成されます。各値の後にはタブが続きますが、行内の最後の値の後には改行が続きます。改行コードは、すべて厳密に Unix の改行が使われることを前提としています。最後の行の末尾にも改行が必要です。値はテキストフォーマットで書き込まれ、引用符で囲まれず、特殊文字はエスケープされます。 このフォーマットは TSV という名前でも利用できます。 TabSeparated フォーマットは、独自のプログラムやスクリプトでデータを処理する場合に便利です。HTTP インターフェイスおよびコマンドラインクライアントの batch mode では、これがデフォルトで使用されます。このフォーマットでは、異なる DBMS 間でデータをやり取りすることもできます。たとえば、MySQL から dump を取得して ClickHouse にアップロードしたり、その逆を行ったりできます。 TabSeparated フォーマットは、合計値の出力 (WITH TOTALS を使用する場合) と極値の出力 (‘extremes’ が 1 に設定されている場合) をサポートしています。こうした場合、合計値と極値はメインデータの後に出力されます。メインの結果、合計値、および極値は、それぞれ空行で区切られます。例:

データのフォーマット

整数は 10 進形式で記述されます。数値の先頭には余分な "+" 文字を付けることができます (パース時には無視され、フォーマット時には記録されません) 。非負の数値に負号を含めることはできません。読み取り時には、空文字列を 0 として、または (符号付き型では) マイナス記号のみから成る文字列を 0 としてパースできます。対応するデータ型に収まらない数値は、エラーメッセージなしで別の数値としてパースされることがあります。 浮動小数点数は 10 進形式で記述されます。小数点の区切りにはドットを使用します。指数表記に加え、'inf''+inf''-inf''nan' もサポートされます。浮動小数点数は、小数点で始まることも小数点で終わることもできます。 フォーマット時には、浮動小数点数で精度が失われることがあります。 パース時には、機械上で表現可能な最も近い値を厳密に読み取る必要はありません。 日付は YYYY-MM-DD 形式で記述され、同じ形式でパースされますが、区切り文字には任意の文字を使用できます。 時刻付きの日付は YYYY-MM-DD hh:mm:ss 形式で記述され、同じ形式でパースされますが、区切り文字には任意の文字を使用できます。 これらはすべて、データをフォーマットする側 (クライアントまたはサーバー) が起動した時点のシステムタイムゾーンで行われます。時刻付きの日付については、夏時間は規定されていません。そのため、ダンプに夏時間中の時刻が含まれている場合、そのダンプはデータと一義的に対応せず、パース時には 2 つの時刻のいずれかが選択されます。 読み取り時には、不正な日付や時刻付きの日付が、エラーメッセージなしで自然なオーバーフローとして、または null の日付・時刻としてパースされることがあります。 例外として、時刻付きの日付のパースでは、ちょうど 10 桁の 10 進数字で構成されている場合に Unix timestamp 形式もサポートされます。結果はタイムゾーンに依存しません。YYYY-MM-DD hh:mm:ssNNNNNNNNNN のフォーマットは自動的に判別されます。 文字列は、特殊文字をバックスラッシュでエスケープして出力されます。出力では次のエスケープシーケンスが使用されます: \b, \f, \r, \n, \t, \0, \', \\。パースでは、\a\v\xHH (16 進エスケープシーケンス) 、および任意の \c シーケンス (ここで c は任意の文字で、これらのシーケンスは c に変換されます) もサポートされます。したがって、データの読み取りでは、改行を \n\、または改行そのものとして記述できるフォーマットがサポートされます。たとえば、文字列 Hello world で、単語間の空白の代わりに改行が入っている場合、次のいずれのバリエーションでもパースできます。
2 番目の形式がサポートされているのは、MySQL がタブ区切りの dump を書き出す際にこの形式を使用するためです。 TabSeparated フォーマットでデータを渡す際にエスケープが必要な最小限の文字は、タブ、改行 (LF) 、およびバックスラッシュです。 エスケープされる記号はごく一部だけです。そのため、出力時にターミナルによって文字列値が簡単に壊されることがあります。 Arrays は [] 内にカンマ区切りの値のリストとして記述します。配列内の Number 項目は通常どおりのフォーマットになります。Date 型と DateTime 型はシングルクォートで記述します。String は、上記と同じエスケープ規則に従ってシングルクォートで記述します。 NULL は、設定 format_tsv_null_representation に従ってフォーマットされます (デフォルト値は \N です) 。 入力データでは、ENUM 値は名前または id で表すことができます。まず、入力値を ENUM 名として照合します。一致しなかった場合、入力値が数値であれば、その数値を ENUM id として照合します。 入力データに ENUM id しか含まれていない場合は、ENUM のパースを最適化するため、設定 input_format_tsv_enum_as_number を有効にすることを推奨します。 Nested 構造の各要素は、配列として表されます。 例:

使用例

データの挿入

football.tsv という名前の以下のTSVファイルを使用します:
データを挿入します:

データの読み込み

データの読み込みには TabSeparated フォーマットを使用します。
出力はタブ区切りフォーマットとなります:

フォーマット設定

最終更新日 2026年7月23日