> ## 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 데이터베이스의 단일 테이블에 기록합니다. 입력 시에는 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 네이티브 저장 클래스(storage class)로 기록되고, `NaN` 값은 ClickHouse 텍스트 직렬화 방식으로 기록됩니다. `Bool` 및 일반 정수 값도 SQLite 네이티브 저장 클래스로 기록됩니다. 확장 정수(wide integer)와 복합 타입은 ClickHouse 텍스트 직렬화 방식으로 기록됩니다. `NULL` 값은 SQLite `NULL`로 기록됩니다.

ClickHouse는 SQLite 입력에서 스키마를 추론할 때 [SQLite 데이터베이스 엔진](/ko/engines/database-engines/sqlite#data_types-support)과 동일한 매핑을 사용합니다.

| SQLite 선언 타입 | ClickHouse 추론 타입 |
| - | - |
| 타입 이름에 `INT`가 포함된 경우 | `Int64` |
| `REAL`, `FLOAT`, `DOUBLE` | `Float64` |
| `TEXT`, `BLOB`를 포함한 기타 타입 | `String` |

기본적으로 ClickHouse는 해당 SQLite 컬럼이 `NULL`을 허용하면 추론된 타입을 `Nullable`로 감싸고, `NOT NULL` 컬럼은 `Nullable`이 아닌 타입으로 유지합니다. 이 동작은 [`schema_inference_make_columns_nullable`](/ko/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`](/ko/reference/settings/formats/input-format#input_format_sqlite_table_name) | SQLite 입력에서 읽어 올 테이블 이름입니다. 비어 있으면 첫 번째 테이블을 사용합니다. | `''` |
| [`output_format_sqlite_table_name`](/ko/reference/settings/formats/output-format#output_format_sqlite_table_name) | SQLite 출력의 테이블 이름입니다. | `'table'` |
