> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-detect-table-modification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

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

# SQLite

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

<h2 id="description">
  説明
</h2>

`SQLite` フォーマットは、SQLite データベースファイルの読み取りと書き込みを行います。

出力時には、ClickHouse はクエリ結果を SQLite データベース内の単一のテーブルに書き込みます。入力時には、ClickHouse は SQLite データベースから単一のテーブルを読み取ります。

ローカルの通常ファイルの場合、ClickHouse は SQLite データベースファイルを直接開きます。それ以外の入力ストリームおよび出力ストリームの場合は、SQLite データベースをメモリ上にマテリアライズします。

入力時、ClickHouse はデフォルトで SQLite データベースの最初のテーブルを読み取ります。読み取るテーブルは `input_format_sqlite_table_name` 設定で変更できます。出力時のデフォルトのテーブル名は `table` で、`output_format_sqlite_table_name` 設定で変更できます。

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

```bash theme={null}
clickhouse-client --query="SELECT number, toString(number) AS s FROM numbers(10) FORMAT SQLite" > data.sqlite
clickhouse-local --input-format SQLite --structure "number UInt64, s String" --query "SELECT * FROM table" < data.sqlite
```

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

ClickHouse は `SQLite` フォーマットでデータを書き込む際、次の宣言型を持つ SQLite テーブルを作成します。

| ClickHouse データ型 | SQLite の宣言型 |
| - | - |
| `UInt64`, `Int128`, `UInt128`, `Int256`, `UInt256` | `TEXT` |
| `Bool`, `Int8`, `Int16`, `Int32`, `Int64`, `UInt8`, `UInt16`, `UInt32` | `INTEGER` |
| 浮動小数点型 | `REAL` |
| その他の型 | `TEXT` |

`Float32` および `Float64` カラムでは、`NaN` 以外の値は SQLite ネイティブのストレージクラスで書き込まれ、`NaN` 値は ClickHouse のテキストシリアライゼーションで書き込まれます。`Bool` および通常の整数値も SQLite ネイティブのストレージクラスで書き込まれます。ワイド整数と複合型は ClickHouse のテキストシリアライゼーションで書き込まれます。`NULL` 値は SQLite の `NULL` として書き込まれます。

ClickHouse が SQLite の入力からスキーマを推論する場合は、[SQLite データベースエンジン](/engines/database-engines/sqlite#data_types-support) と同じ対応関係が使用されます。

| SQLite の宣言型 | ClickHouse が推論する型 |
| - | - |
| 型名に `INT` を含む | `Int64` |
| `REAL`, `FLOAT`, `DOUBLE` | `Float64` |
| `TEXT` や `BLOB` を含むその他の型 | `String` |

デフォルトでは、対応する SQLite カラムが `NULL` を許容する場合、ClickHouse は推論した型を `Nullable` でラップします。`NOT NULL` カラムは `Nullable` にはなりません。この動作は [`schema_inference_make_columns_nullable`](/ja/reference/settings/formats/schema-inference#schema_inference_make_columns_nullable) 設定で変更できます。

スキーマ推論では、元の ClickHouse データ型は保持されません。たとえば、`Bool` は SQLite の `INTEGER` として書き込まれ、`Int64` として推論されます。また、`Date`、`DateTime`、`Decimal`、`UUID`、`IPv4`、`IPv6`、`Enum`、`Array`、`Tuple`、`Map` は SQLite の `TEXT` として書き込まれ、`String` として推論されます。

ClickHouse のテーブル構造を明示的に指定した場合、浮動小数点値は SQLite の `REAL` 値として読み込まれ、`NaN` の場合はテキストにフォールバックします。その他の SQLite の値はテキストとして読み込まれ、指定された ClickHouse の型にパースされます。

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

| 設定 | 説明 | デフォルト |
| - | - | - |
| [`input_format_sqlite_table_name`](/ja/reference/settings/formats/input-format#input_format_sqlite_table_name) | SQLite 入力から読み取るテーブルの名前。空の場合は最初のテーブルが使用されます。 | `''` |
| [`output_format_sqlite_table_name`](/ja/reference/settings/formats/output-format#output_format_sqlite_table_name) | SQLite 出力のテーブル名。 | `'table'` |
