> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# ORC

| 入力 | 出力 | エイリアス |
| - | - | - |
| ✔ | ✔ | |

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

[Apache ORC](https://orc.apache.org/) は、[Hadoop](https://hadoop.apache.org/) エコシステムで広く利用されている列指向ストレージフォーマットです。

<div id="data-types-matching-orc">
  ## データ型の対応
</div>

以下の表は、サポートされている ORC のデータ型と、`INSERT` および `SELECT` クエリでそれぞれ対応する ClickHouse の [データ型](/ja/reference/data-types/index) を比較したものです。

| ORC データ型 (`INSERT`) | ClickHouse データ型 | ORC データ型 (`SELECT`) |
| - | - | - |
| `Boolean` | [Bool](/ja/reference/data-types/boolean) | `Boolean` |
| `Tinyint` | [Int8/UInt8](/ja/reference/data-types/int-uint)/[Enum8](/ja/reference/data-types/enum) | `Tinyint` |
| `Smallint` | [Int16/UInt16](/ja/reference/data-types/int-uint)/[Enum16](/ja/reference/data-types/enum) | `Smallint` |
| `Int` | [Int32/UInt32](/ja/reference/data-types/int-uint) | `Int` |
| `Bigint` | [Int64/UInt64](/ja/reference/data-types/int-uint) | `Bigint` |
| `Float` | [Float32](/ja/reference/data-types/float) | `Float` |
| `Double` | [Float64](/ja/reference/data-types/float) | `Double` |
| `Decimal` | [Decimal](/ja/reference/data-types/decimal) | `Decimal` |
| `Date` | [Date32](/ja/reference/data-types/date32) | `Date` |
| `Timestamp` | [DateTime64](/ja/reference/data-types/datetime64) | `Timestamp` |
| `String`, `Varchar`, `Binary` | [String](/ja/reference/data-types/string) | `String` |
| `Char` | [FixedString](/ja/reference/data-types/fixedstring) | `String` |
| `List` | [Array](/ja/reference/data-types/array) | `List` |
| `Struct` | [Tuple](/ja/reference/data-types/tuple) | `Struct` |
| `Map` | [Map](/ja/reference/data-types/map) | `Map` |
| `Int` | [IPv4](/ja/reference/data-types/int-uint) | `Int` |
| `Binary` | [IPv6](/ja/reference/data-types/ipv6) | `Binary` |
| `Binary` | [Int128/UInt128/Int256/UInt256](/ja/reference/data-types/int-uint) | `Binary` |
| `Binary` | [Decimal256](/ja/reference/data-types/decimal) | `Binary` |
| `Union` | [Variant](/ja/reference/data-types/variant) | `Union` |

* その他の型はサポートされていません。
* ORC の `Union` カラムはユニオンのブランチ型に対する [Variant](/ja/reference/data-types/variant) として読み取られ、`Variant` カラムはそのブランチ型に対する ORC の `Union` として書き込まれます。`Variant` はブランチ型をソートするため、ブランチの順序が ORC ファイルと異なる場合があることに注意してください。重複するブランチ型を含むユニオン (例: `uniontype<int,int>`) はサポートされていません。
* Array はネスト可能で、引数として `Nullable` 型の値を取ることもできます。`Tuple` 型と `Map` 型もネストできます。
* ClickHouse テーブルのカラムのデータ型は、対応する ORC のデータフィールドと一致している必要はありません。データを挿入する際、ClickHouse はまず上記の表に従ってデータ型を解釈し、その後、ClickHouse テーブルのカラムに設定されたデータ型へデータを [CAST](/ja/reference/functions/regular-functions/type-conversion-functions#CAST) します。

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

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

次のデータを含む、`football.orc` という名前の ORC ファイルを使用します。

```text theme={null}
    ┌───────date─┬─season─┬─home_team─────────────┬─away_team───────────┬─home_team_goals─┬─away_team_goals─┐
 1. │ 2022-04-30 │   2021 │ Sutton United         │ Bradford City       │               1 │               4 │
 2. │ 2022-04-30 │   2021 │ Swindon Town          │ Barrow              │               2 │               1 │
 3. │ 2022-04-30 │   2021 │ Tranmere Rovers       │ Oldham Athletic     │               2 │               0 │
 4. │ 2022-05-02 │   2021 │ Port Vale             │ Newport County      │               1 │               2 │
 5. │ 2022-05-02 │   2021 │ Salford City          │ Mansfield Town      │               2 │               2 │
 6. │ 2022-05-07 │   2021 │ Barrow                │ Northampton Town    │               1 │               3 │
 7. │ 2022-05-07 │   2021 │ Bradford City         │ Carlisle United     │               2 │               0 │
 8. │ 2022-05-07 │   2021 │ Bristol Rovers        │ Scunthorpe United   │               7 │               0 │
 9. │ 2022-05-07 │   2021 │ Exeter City           │ Port Vale           │               0 │               1 │
10. │ 2022-05-07 │   2021 │ Harrogate Town A.F.C. │ Sutton United       │               0 │               2 │
11. │ 2022-05-07 │   2021 │ Hartlepool United     │ Colchester United   │               0 │               2 │
12. │ 2022-05-07 │   2021 │ Leyton Orient         │ Tranmere Rovers     │               0 │               1 │
13. │ 2022-05-07 │   2021 │ Mansfield Town        │ Forest Green Rovers │               2 │               2 │
14. │ 2022-05-07 │   2021 │ Newport County        │ Rochdale            │               0 │               2 │
15. │ 2022-05-07 │   2021 │ Oldham Athletic       │ Crawley Town        │               3 │               3 │
16. │ 2022-05-07 │   2021 │ Stevenage Borough     │ Salford City        │               4 │               2 │
17. │ 2022-05-07 │   2021 │ Walsall               │ Swindon Town        │               0 │               3 │
    └────────────┴────────┴───────────────────────┴─────────────────────┴─────────────────┴─────────────────┘
```

データを挿入します:

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

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

`ORC`フォーマットを使用してデータを読み込みます。

```sql theme={null}
SELECT *
FROM football
INTO OUTFILE 'football.orc'
FORMAT ORC
```

<Tip>
  ORC はバイナリ形式のため、ターミナル上では人間が読める形では表示されません。ORC ファイルを出力するには、`INTO OUTFILE` を使用してください。
</Tip>

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

| 設定 | 説明 | デフォルト |
| - | - | - |
| [`output_format_orc_string_as_string`](/ja/reference/settings/formats/output-format#output_format_orc_string_as_string) | String カラムには、Binary ではなく ORC の String 型を使用します。 | `true` |
| [`output_format_orc_compression_method`](/ja/reference/settings/formats/output-format#output_format_orc_compression_method) | 出力 ORC フォーマットで使用する圧縮方式。デフォルト値 | `zstd` |
| [`input_format_orc_case_insensitive_column_matching`](/ja/reference/settings/formats/input-format#input_format_orc_case_insensitive_column_matching) | ORC のカラムと ClickHouse のカラムを照合する際に、大文字・小文字を区別しません。 | `false` |
| [`input_format_orc_allow_missing_columns`](/ja/reference/settings/formats/input-format#input_format_orc_allow_missing_columns) | ORC データの読み取り時に、欠落しているカラムを許可します。 | `true` |
| [`input_format_orc_skip_columns_with_unsupported_types_in_schema_inference`](/ja/reference/settings/formats/input-format#input_format_orc_skip_columns_with_unsupported_types_in_schema_inference) | ORC フォーマットのスキーマ推論時に、未対応の型を持つカラムをスキップできるようにします。 | `false` |

Hadoop とデータをやり取りするには、[HDFS テーブルエンジン](/ja/reference/engines/table-engines/integrations/hdfs) を使用できます。
