> ## Documentation Index
> Fetch the complete documentation index at: https://clickhouse.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

> TSVフォーマットに関するドキュメント

# TabSeparated

| 入力 | 出力 | 別名    |
| -- | -- | ----- |
| ✔  | ✔  | `TSV` |

<div id="description">
  ## 説明
</div>

TabSeparatedフォーマットでは、データは行単位で書き込まれます。各行はタブで区切られた値で構成されます。各値の後にはタブが続きますが、行内の最後の値の後には改行が続きます。改行コードは、すべて厳密に Unix の改行が使われることを前提としています。最後の行の末尾にも改行が必要です。値はテキストフォーマットで書き込まれ、引用符で囲まれず、特殊文字はエスケープされます。

このフォーマットは `TSV` という名前でも利用できます。

`TabSeparated` フォーマットは、独自のプログラムやスクリプトでデータを処理する場合に便利です。HTTP インターフェイスおよびコマンドラインクライアントの batch mode では、これがデフォルトで使用されます。このフォーマットでは、異なる DBMS 間でデータをやり取りすることもできます。たとえば、MySQL から dump を取得して ClickHouse にアップロードしたり、その逆を行ったりできます。

`TabSeparated` フォーマットは、合計値の出力 (WITH TOTALS を使用する場合) と極値の出力 ('extremes' が 1 に設定されている場合) をサポートしています。こうした場合、合計値と極値はメインデータの後に出力されます。メインの結果、合計値、および極値は、それぞれ空行で区切られます。例:

```sql theme={null}
SELECT EventDate, count() AS c FROM test.hits GROUP BY EventDate WITH TOTALS ORDER BY EventDate FORMAT TabSeparated

2014-03-17      1406958
2014-03-18      1383658
2014-03-19      1405797
2014-03-20      1353623
2014-03-21      1245779
2014-03-22      1031592
2014-03-23      1046491

1970-01-01      8873898

2014-03-17      1031592
2014-03-23      1406958
```

<div id="tabseparated-data-formatting">
  ## データのフォーマット
</div>

整数は 10 進形式で記述されます。数値の先頭には余分な `&quot;+&quot;` 文字を付けることができます (パース時には無視され、フォーマット時には記録されません) 。非負の数値に負号を含めることはできません。読み取り時には、空文字列を 0 として、または (符号付き型では) マイナス記号のみから成る文字列を 0 としてパースできます。対応するデータ型に収まらない数値は、エラーメッセージなしで別の数値としてパースされることがあります。

浮動小数点数は 10 進形式で記述されます。小数点の区切りにはドットを使用します。指数表記に加え、`&#39;inf&#39;`、`&#39;+inf&#39;`、`&#39;-inf&#39;`、`&#39;nan&#39;` もサポートされます。浮動小数点数は、小数点で始まることも小数点で終わることもできます。
フォーマット時には、浮動小数点数で精度が失われることがあります。
パース時には、機械上で表現可能な最も近い値を厳密に読み取る必要はありません。

日付は YYYY-MM-DD 形式で記述され、同じ形式でパースされますが、区切り文字には任意の文字を使用できます。
時刻付きの日付は `YYYY-MM-DD hh:mm:ss` 形式で記述され、同じ形式でパースされますが、区切り文字には任意の文字を使用できます。
これらはすべて、データをフォーマットする側 (クライアントまたはサーバー) が起動した時点のシステムタイムゾーンで行われます。時刻付きの日付については、夏時間は規定されていません。そのため、ダンプに夏時間中の時刻が含まれている場合、そのダンプはデータと一義的に対応せず、パース時には 2 つの時刻のいずれかが選択されます。
読み取り時には、不正な日付や時刻付きの日付が、エラーメッセージなしで自然なオーバーフローとして、または null の日付・時刻としてパースされることがあります。

例外として、時刻付きの日付のパースでは、ちょうど 10 桁の 10 進数字で構成されている場合に Unix timestamp 形式もサポートされます。結果はタイムゾーンに依存しません。`YYYY-MM-DD hh:mm:ss` と `NNNNNNNNNN` のフォーマットは自動的に判別されます。

文字列は、特殊文字をバックスラッシュでエスケープして出力されます。出力では次のエスケープシーケンスが使用されます: `\b`, `\f`, `\r`, `\n`, `\t`, `\0`, `\'`, `\\`。パースでは、`\a`、`\v`、`\xHH` (16 進エスケープシーケンス) 、および任意の `\c` シーケンス (ここで `c` は任意の文字で、これらのシーケンスは `c` に変換されます) もサポートされます。したがって、データの読み取りでは、改行を `\n`、`\`、または改行そのものとして記述できるフォーマットがサポートされます。たとえば、文字列 `Hello world` で、単語間の空白の代わりに改行が入っている場合、次のいずれのバリエーションでもパースできます。

```text theme={null}
Hello\nworld

Hello\
world
```

2 番目の形式がサポートされているのは、MySQL がタブ区切りの dump を書き出す際にこの形式を使用するためです。

TabSeparated フォーマットでデータを渡す際にエスケープが必要な最小限の文字は、タブ、改行 (LF) 、およびバックスラッシュです。

エスケープされる記号はごく一部だけです。そのため、出力時にターミナルによって文字列値が簡単に壊されることがあります。

Arrays は `[]` 内にカンマ区切りの値のリストとして記述します。配列内の Number 項目は通常どおりのフォーマットになります。`Date` 型と `DateTime` 型はシングルクォートで記述します。String は、上記と同じエスケープ規則に従ってシングルクォートで記述します。

[NULL](/docs/ja/reference/syntax) は、設定 [format\_tsv\_null\_representation](/docs/ja/reference/settings/formats#format_tsv_null_representation) に従ってフォーマットされます (デフォルト値は `\N` です) 。

入力データでは、ENUM 値は名前または id で表すことができます。まず、入力値を ENUM 名として照合します。一致しなかった場合、入力値が数値であれば、その数値を ENUM id として照合します。
入力データに ENUM id しか含まれていない場合は、ENUM のパースを最適化するため、設定 [input\_format\_tsv\_enum\_as\_number](/docs/ja/reference/settings/formats#input_format_tsv_enum_as_number) を有効にすることを推奨します。

[Nested](/docs/ja/reference/data-types/nested-data-structures/index) 構造の各要素は、配列として表されます。

例:

```sql theme={null}
CREATE TABLE nestedt
(
    `id` UInt8,
    `aux` Nested(
        a UInt8,
        b String
    )
)
ENGINE = TinyLog
```

```sql theme={null}
INSERT INTO nestedt VALUES ( 1, [1], ['a'])
```

```sql theme={null}
SELECT * FROM nestedt FORMAT TSV
```

```response theme={null}
1  [1]    ['a']
```

<div id="example-usage">
  ## 使用例
</div>

<div id="inserting-data">
  ### データの挿入
</div>

`football.tsv` という名前の以下のTSVファイルを使用します:

```tsv theme={null}
2022-04-30      2021    Sutton United   Bradford City   1       4
2022-04-30      2021    Swindon Town    Barrow  2       1
2022-04-30      2021    Tranmere Rovers Oldham Athletic 2       0
2022-05-02      2021    Port Vale       Newport County  1       2
2022-05-02      2021    Salford City    Mansfield Town  2       2
2022-05-07      2021    Barrow  Northampton Town        1       3
2022-05-07      2021    Bradford City   Carlisle United 2       0
2022-05-07      2021    Bristol Rovers  Scunthorpe United       7       0
2022-05-07      2021    Exeter City     Port Vale       0       1
2022-05-07      2021    Harrogate Town A.F.C.   Sutton United   0       2
2022-05-07      2021    Hartlepool United       Colchester United       0       2
2022-05-07      2021    Leyton Orient   Tranmere Rovers 0       1
2022-05-07      2021    Mansfield Town  Forest Green Rovers     2       2
2022-05-07      2021    Newport County  Rochdale        0       2
2022-05-07      2021    Oldham Athletic Crawley Town    3       3
2022-05-07      2021    Stevenage Borough       Salford City    4       2
2022-05-07      2021    Walsall Swindon Town    0       3
```

データを挿入します:

```sql theme={null}
INSERT INTO football FROM INFILE 'football.tsv' FORMAT TabSeparated;
```

<div id="reading-data">
  ### データの読み込み
</div>

データの読み込みには `TabSeparated` フォーマットを使用します。

```sql theme={null}
SELECT *
FROM football
FORMAT TabSeparated
```

出力はタブ区切りフォーマットとなります：

```tsv theme={null}
2022-04-30      2021    Sutton United   Bradford City   1       4
2022-04-30      2021    Swindon Town    Barrow  2       1
2022-04-30      2021    Tranmere Rovers Oldham Athletic 2       0
2022-05-02      2021    Port Vale       Newport County  1       2
2022-05-02      2021    Salford City    Mansfield Town  2       2
2022-05-07      2021    Barrow  Northampton Town        1       3
2022-05-07      2021    Bradford City   Carlisle United 2       0
2022-05-07      2021    Bristol Rovers  Scunthorpe United       7       0
2022-05-07      2021    Exeter City     Port Vale       0       1
2022-05-07      2021    Harrogate Town A.F.C.   Sutton United   0       2
2022-05-07      2021    Hartlepool United       Colchester United       0       2
2022-05-07      2021    Leyton Orient   Tranmere Rovers 0       1
2022-05-07      2021    Mansfield Town  Forest Green Rovers     2       2
2022-05-07      2021    Newport County  Rochdale        0       2
2022-05-07      2021    Oldham Athletic Crawley Town    3       3
2022-05-07      2021    Stevenage Borough       Salford City    4       2
2022-05-07      2021    Walsall Swindon Town    0       3
```

<div id="format-settings">
  ## フォーマット設定
</div>

| 設定                                                                                                                                            | 説明                                                                                                                                                                                 | デフォルト   |
| --------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |
| [`format_tsv_null_representation`](/docs/ja/reference/settings/formats#format_tsv_null_representation)                                             | TSVフォーマットでの NULL の独自表現です。                                                                                                                                                          | `\N`    |
| [`input_format_tsv_empty_as_default`](/docs/ja/reference/settings/formats#input_format_tsv_empty_as_default)                                       | TSV入力内の空のフィールドをデフォルト値として扱います。複雑なデフォルト式の場合は、[input\_format\_defaults\_for\_omitted\_fields](/docs/ja/reference/settings/formats#input_format_defaults_for_omitted_fields) も有効にする必要があります。 | `false` |
| [`input_format_tsv_enum_as_number`](/docs/ja/reference/settings/formats#input_format_tsv_enum_as_number)                                           | TSVフォーマットで挿入される enum 値を enum のインデックスとして扱います。                                                                                                                                       | `false` |
| [`input_format_tsv_use_best_effort_in_schema_inference`](/docs/ja/reference/settings/formats#input_format_tsv_use_best_effort_in_schema_inference) | TSVフォーマットでスキーマを推論する際に、いくつかの調整とヒューリスティクスを使用します。無効な場合、すべてのフィールドは String と推論されます。                                                                                                     | `true`  |
| [`output_format_tsv_crlf_end_of_line`](/docs/ja/reference/settings/formats#output_format_tsv_crlf_end_of_line)                                     | true に設定すると、TSV出力フォーマットの行末は `\n` ではなく `\r\n` になります。                                                                                                                                | `false` |
| [`input_format_tsv_crlf_end_of_line`](/docs/ja/reference/settings/formats#input_format_tsv_crlf_end_of_line)                                       | true に設定すると、TSV入力フォーマットの行末は `\n` ではなく `\r\n` になります。                                                                                                                                | `false` |
| [`input_format_tsv_skip_first_lines`](/docs/ja/reference/settings/formats#input_format_tsv_skip_first_lines)                                       | データの先頭から指定した行数をスキップします。                                                                                                                                                            | `0`     |
| [`input_format_tsv_detect_header`](/docs/ja/reference/settings/formats#input_format_tsv_detect_header)                                             | TSVフォーマット内の名前と型を含むヘッダーを自動検出します。                                                                                                                                                    | `true`  |
| [`input_format_tsv_skip_trailing_empty_lines`](/docs/ja/reference/settings/formats#input_format_tsv_skip_trailing_empty_lines)                     | データ末尾の空行をスキップします。                                                                                                                                                                  | `false` |
| [`input_format_tsv_allow_variable_number_of_columns`](/docs/ja/reference/settings/formats#input_format_tsv_allow_variable_number_of_columns)       | TSVフォーマットで可変数のカラムを許可し、余分なカラムは無視し、不足しているカラムにはデフォルト値を使用します。                                                                                                                          | `false` |
