DatabricksのCOPY INTOコマンド

[COPY INTO \| Databricks on AWS](https://docs.databricks.com/spark/latest/spark-sql/language-manual/delta-copy-into.html) [2022/6/9時点]の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

ファイルの格納場所からDeltaテーブルにデータをロードします。これはリトライ可能かつ冪等性のあるオペレーションであり、ソース格納場所にあるすでにロードされたファイルはスキップされます。サンプルは、[COPY INTOによる一般的なロードのパターン](https://qiita.com/taka_yayoi/items/4469a75784ffb2afe96e)をご覧ください。

# 構文

```sql:SQL
COPY INTO target_table
  FROM { source |
         ( SELECT expression_list FROM source ) }
           [ WITH (
             [ CREDENTIAL { credential_name |
               (temporary_credential_options) } ]
             [ ENCRYPTION (encryption_options) ])
           ]
  FILEFORMAT = data_source
  [ VALIDATE [ ALL | num_rows ROWS ] ]
  [ FILES = ( file_name [, ...] ) | PATTERN = regex_pattern ]
  [ FORMAT_OPTIONS ( { data_source_reader_option = value } [, ...] ) ]
  [ COPY_OPTIONS ( { copy_option = value } [, ...] ) ]
```

# パラメーター

- [**target\_table**](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-names.html#table-name)
    既存のDeltaテーブルを識別します。[target\_table](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-names.html#table-name)に[時期の指定](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-names.html#table-name)を含めることはできません。

    `` delta.`/path/to/table` ``のように場所を指定する形でテーブル名が指定された場合、Unity Catalogは書き込まれる場所に対するアクセスを統制することができます。外部のロケーションには以下の方法で書き込みを行うことができます。
    - 外部のロケーションとして場所を定義し、その外部ロケーションに対する`WRITE FILES`権限を定義する。
    - ``COPY INTO delta.`/some/location` WITH (CREDENTIAL <named_credential>)``を用いて、認証情報を提供する名前付きストレージ認証情報に対する`WRITE FILES`を持っている。
    詳細は[Manage external locations and storage credentials](https://docs.databricks.com/data-governance/unity-catalog/manage-external-locations-and-credentials.html)を参照ください。

    > **プレビュー**
Unity Catalogは[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。プレビューに参加したい場合にはDatabricks担当に連絡してください。

- **source**
    データを読み込むファイルの場所です。この場所にあるファイルは`FILEFORMAT`で指定されるフォーマットである必要があります。場所の情報はURIの形式で指定されます。

    ソースの場所へのアクセスは以下の方法で指定されます。
    - [credential\_name](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-names.html#credential-name)
        ストレージの格納場所に書き込む、アクセスするために使用する認証情報の名称です。これはオプションです。ファイルが[外部格納場所](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-external-locations.html#external-location)に含まれていない場合にのみこの認証情報を使用します。
    - クラスターの[インスタンスプロファイル](https://docs.databricks.com/clusters/configure.html#instance-profiles)
    - インラインの一時的な認証情報。
    - Unity Catalogを通じて外部格納場所としてソース格納場所を定義し、外部格納場所に対する`READ FILES`を設定する。
    - Unity Catalogを通じて、読み込みをおこな場所に対する認証情報を提供する`READ FILES`権限を持つ名前付きストレージ認証情報を使用する。

    > **プレビュー**
Unity Catalogは[パブリックプレビュー](https://docs.databricks.com/release-notes/release-types.html)です。プレビューに参加したい場合にはDatabricks担当に連絡してください。

    使用するためのk源を持っている外部ロケーションとしてパスがすでに設定されている場合には、インラインや名前付き認証情報を使用する必要はありません。詳細は、[Manage external locations and storage credentials](https://docs.databricks.com/data-governance/unity-catalog/manage-external-locations-and-credentials.html)をごんらんください。

    > **注意**
ソースのファイルパスがルートパスの場合、末尾にスラッシュ(`/`)を追加してください。例えば、`s3://my-bucket/`のようになります。

    受け付ける認証情報のオプションは以下の通りです。
    - AWS S3では`AWS_ACCESS_KEY`, `AWS_SECRET_KEY`, `AWS_SESSION_TOKEN`
    -  ADLS Gen2とAzure Blob Storageでは`AZURE_SAS_TOKEN`

    受け付ける暗号化オプションは以下の通りでうs。
    - AWS S3では`TYPE = 'AWS_SSE_C'`と`MASTER_KEY`

    [Use temporary credentials to load data with COPY INTO](https://docs.databricks.com/ingestion/copy-into/temporary-credentials.html)をご覧ください。

- **SELECT expression_list**

    Deltaテーブルにコピーする前にソースデータから特定のカラムあるいは表現式を選択します。表現式はウィンドウオペレーションを含むSELECT分で使用できる任意のものとなります。グローバルの集計処理でのみ集計表現を使用することができ、この構文ではカラムに対する`GROUP BY`を使用することはできません。

- **FILEFORMAT = data_source**

   ロードするソースファイルのフォーマットです。`CSV`, `JSON`, `AVRO`, `ORC`, `PARQUET`, `TEXT`, `BINARYFILE`のいずれかとなります。

- **VALIDATE**

    テーブルにロードされるデータが検証されますが、テーブルには書き込まれません。これらの検証には以下のものが含まれます。
    - データをパースできるかどうか。
    - テーブルのスキーマにマッチするかどうか、あるいはスキーマが進化する必要があるかどうか。
    - 全てのNULL可能性、チェック制約が合致するかどうか。

    デフォルトでは、ロードするデータの全てが検証されます。`VALIDATE 15 ROWS`のように検証する行数を`ROWS`キーワードで指定することができます。`COPY INTO`文は50行のデータプレビュー、`ROWS`キーワードで50以下の値が指定された場合にはそれより少ない数のデータプレビューが表示されます。

    > **注意**
VALIDATEモードはDatabricksランタイム10.3以降で使用できます。

- **FILES**

    ロードするファイル名のリストであり最大数は1000です。`PATTERN`と一緒に使用することはできません。

- **PATTERN**

    ソースディレクトリからロードするファイルを特定する正規表現パターンです。`FILES`と一緒に指定することはできません。

- **FORMAT_OPTIONS**

    Apache Sparkデータソースリーダーに渡される指定されたフォーマットに対応するオプションです。それぞれのファイルフォーマットの[フォーマットオプション](#フォーマットオプション)をご覧ください。

- **COPY_OPTIONS**

    `COPY INTO`コマンドのオペレーションを制御するオプションです。
    - `force`: ブール値、デフォルトは`false`です。`true`に設定すると、冪等性は無効化され、以前ロードしたかどうかに関係なくファイルがロードされます。
    - `mergeSchema`: ブール値、デフォルトは`false`です。`true`に設定するとスキーマは入力データに応じて進化します。テーブルのスキーマを進化させるには、テーブルに対する`OWN`権限を持っている必要があります。

    > **注意**
`mergeSchema`オプションはDatabricksランタイム10.3以降で使用できます。

# ファイルメタデータへのアクセス

ファイルベースデータソースのメタデータにアクセスする方法に関しては、[Databricksにおけるファイルメタデータカラム](https://qiita.com/taka_yayoi/items/949e47841df89fd7328b)をご覧ください。

# フォーマットオプション

## 一般的なオプション

以下のオプションはすべてのファイルフォーマットに適用されます。

| オプション |型 | 説明 | デフォルト値 |
|:--|:--|:--|:--|
| **modifiedAfter**  | `タイムスタンプの文字列`, 例えば`2021-01-01 00:00:00.000000 UTC+0`  | 指定されたタイムスタンプ以降の変更タイムスタンプをもつファイルを取り込むオプションのタイムスタンプ  | None  |
| **modifiedBefore**  | `タイムスタンプの文字列`, 例えば`2021-01-01 00:00:00.000000 UTC+0`  |  指定されたタイムスタンプ以前の変更タイムスタンプをもつファイルを取り込むオプションのタイムスタンプ  | None  |
| **pathGlobFilter**  | `文字列`  |  ファイルを選択するために指定するglobパターン。`COPY INTO`の`PATTERN`と同じです。 |  None |
| **recursiveFileLookup**  |  `ブール値` | ベースディレクトリ内のデータを再帰的にロードし、パーティション推定をスキップするかどうか。  | false  |


## `JSON`オプション

| オプション |
|:--|
|**allowBackslashEscapingAnyCharacter**<br>タイプ: `Boolean `<br>直後の文字をエスケープするためにバックスラッシュを許可するかどうかを指定します。無効化されている場合、JSON仕様で明示的に一覧されている文字のみがエスケープされます。<br>デフォルト値: `false`   |
|**allowComments**<br>タイプ: `Boolean `<br>パースされたコンテンツ内でJava, C, C++スタイルのコメント(`'/'`, `'*'`, `'//'`)を許可するかどうかを指定します。<br>デフォルト値: `false`   |
|**allowNonNumericNumbers**<br>タイプ: `Boolean `<br>not-a-number(`NaN`)を適切な浮動小数点の値として許可するかどうかを指定します。<br>デフォルト値: `true`   |
|**allowNumericLeadingZeros**<br>タイプ: `Boolean `<br>ゼロで始まる整数値(00001など)を許可するかどうかを指定します。<br>デフォルト値: `false`   |
|**allowSingleQuotes**<br>タイプ: `Boolean `<br>文字列を引用(名前や文字列の値)するためにシングルクオート(アポストロフィ、`'\'`)を許可するかどうかを指定します。<br>デフォルト値: `true`   |
|**allowUnquotedControlChars**<br>タイプ: `Boolean `<br>JSON文字列の中にエスケープされていない制御文字(32より小さい値のASCII文字、タブ、ラインフィード文字を含む)を含めて良いかどうかを指定します。<br>デフォルト値: `false`    |
|**allowUnquotedFieldNames**<br>タイプ: `Boolean`<br>クオートされていないフィールド名(JavaScriptでは許可されますが、JSON仕様では許可されません)の利用を許可するかどうかを指定します。<br>デフォルト値: `false`   |
|**badRecordsPath**<br>タイプ: `String`<br>不正なJSONレコードに関する情報を記録するファイルのパスです。<br>デフォルト値: None   |
|**columnNameOfCorruptRecord**<br>タイプ: `String`<br>不正でパースできないレコードを格納するカラム名です。パーシングの`mode`が`DROPMALFORMED`の場合、このカラムは空になります。<br>デフォルト値: `_corrupt_record`      |
|**dateFormat**<br>タイプ: `String`<br>日付文字列をパースするフォーマットです。<br>デフォルト値: `yyyy-MM-dd`   |
|**dropFieldIfAllNull**<br>タイプ: `Boolean`<br>スキーマ推定の際に、全てがnull値のカラム、空の配列、空のstructsのカラムを無視するかどうかを指定します。<br>デフォルト値: `false`   |
|**encoding**あるいは**charset**<br>タイプ: `String`<br>JSONファイルのエンコーディング名を指定します。オプションについては`java.nio.charset.Charset`をご覧ください。`multiline`が`true`の場合、`UTF-16`や`UTF-32`を使うことはできません。<br>デフォルト値: `UTF-8`   |
|**ignoreCorruptFile**<br>タイプ: `Boolean`<br>破損したファイルを無視するかどうか。trueの場合、破損したファイルに遭遇してもSparkジョブは処理を続け、読み込んだファイルを取得することができます。Delta Lake履歴の`operationMetrics`カラムの`numSkippedCorruptFiles`で確認することができます。Databricks 11.0以降で利用できます。<br>デフォルト値: `false`   |
|**ignoreMissingFiles**<br>タイプ: `Boolean`<br>存在しないファイルを無視するかどうか。trueの場合、存在しないファイルに遭遇してもSparkジョブは処理を続け、読み込んだファイルを取得することができます。Databricks 11.0以降で利用できます。<br>デフォルト値: `false` (COPY INTOではtrue)   |
|**inferTimestamp**<br>タイプ: `Boolean`<br>タイムスタンプ文字列を`TimestampType`として推定するかどうかを指定します。`true`に設定すると、スキーマ推定の処理時間が長くなります。<br>デフォルト値: `false`   |
|**lineSep**<br>タイプ: `String`<br>二つの連続するJSONレコードの区切り文字です。<br>デフォルト値: None、`\r`, `\r\n`, `\n`をカバーします。   |
|**lineSep**<br>タイプ: `String`<br>連続する2つのJSONレコードの区切り文字です。<br>デフォルト値: None、`\r`, `\r\n`, `\n`から選択できます。   |
|**locale**<br>タイプ: `String`<br>`java.util.Locale`のIDです。JSONのパーシングする際に、デフォルトの日付、タイムスタンプ、数値に影響を与えます。<br>デフォルト値: `US`   |
|**mode**<br>タイプ: `String`<br>不正レコードのハンドリングにおけるパーサーのモードです。`'PERMISSIVE'`, `'DROPMALFORMED'`, `'FAILFAST'`のいずれかとなります。<br>デフォルト値: `PERMISSIVE `|
|**multiLine**<br>タイプ: `Boolean`<br>JSONレコードが複数行にわたるかどうかを指定します。<br>デフォルト値: `false`   |
|**prefersDecimal**<br>タイプ: `Boolean`<br>スキーマ推定の際、floatやdoubleを`DecimalType`として推定するかどうかを指定します。<br>デフォルト値: `false`   |
|**primitivesAsString**<br>タイプ: `Boolean`<br>数字やbooleanのようなプリミティブ型を`StringType`として推定するかどうかを指定します。<br>デフォルト値: `false`   |
|**rescuedDataColumn**<br>タイプ: `String`<br>データ型の不一致やスキーマミスマッチ(カラム名の大文字小文字を含む)でパーシングできなかった全てのデータを別のカラムで収集するかどうかを指定します。Auto Loaderを使用する際には、このカラムは自動で含まれます。詳細は[Rescued data column](https://docs.databricks.com/spark/latest/structured-streaming/auto-loader-schema.html#rescue)を参照ください。<br>デフォルト値: None   |
|**timestampFormat**<br>タイプ: `String`<br>パースするタイムスタンプ文字列のフォーマットです。<br>デフォルト値: `yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]`   |
|**timeZone**<br>タイプ: `String`<br>タイムスタンプと日付をパーシングする際に使用する`java.time.ZoneId`となります。<br>デフォルト値: None   |


## `CSV`オプション

| オプション |
|:--|
|**badRecordsPath**<br>タイプ: `String`<br>不正なCSVレコードに関する情報を記録するファイルのパスです。<br>デフォルト値: None   |
|**charToEscapeQuoteEscaping**<br>タイプ: `Char`<br>クオートをエスケープするために使用する文字です。例えばレコード`[ " a\\", b ]`に対して<ul><li>`'\'`をエスケープする文字が定義されていない場合、レコードはパースされません。パーサーは文字列`[a],[\],["],[,],[ ],[b]`を読み込み、クローズするクオートがないためエラーを発生させます。<li>`'\'`をエスケープする文字が`\`として定義されている場合、レコードが読み込まれ`[a\]`と`[b]`の2つの値が読み込まれます。</ul><br>デフォルト値: `'\0'`   |
|**columnNameOfCorruptRecord**<br>タイプ: `String`<br>不正でパースできないレコードを格納するカラム名です。パーシングの`mode`が`DROPMALFORMED`の場合、このカラムは空になります。<br>デフォルト値: `_corrupt_record`      |
|**comment**<br>タイプ: `Char`<br>テキストの行の最初にある場合に行コメントと表現する文字を定義します。コメントのスキップを無効化するには`'\0'`を使用します。<br>デフォルト値: `'#'`   |
|**dateFormat**<br>タイプ: `String`<br>日付文字列をパースするフォーマットです。<br>デフォルト値: `yyyy-MM-dd`   |
|**emptyValue**<br>タイプ: `String`<br>空の値を表現する文字列です。<br>デフォルト値: `""`   |
|**encoding**あるいは**charset**<br>タイプ: `String`<br>CSVファイルのエンコーディング名を指定します。オプションについては`java.nio.charset.Charset`をご覧ください。`multiline`が`true`の場合、`UTF-16`や`UTF-32`を使うことはできません。<br>デフォルト値: `UTF-8`   |
|**enforceSchema**<br>タイプ: `Boolean`<br>CSVファイルに対して、指定された、あるいは推定されたスキーマの適用を強制するかどうかを指定します。オプションが有効化された場合、CSVファイルのヘッダーは無視されます。Auto Loaderを使用する際、データを救助しスキーマ進化を実現するために、デフォルトでこのオプションは無視されます。<br>デフォルト値: `true`   |
|**escape**<br>タイプ: `Char`<br>データをパーシングする際に使用するエスケープ文字です。<br>デフォルト値: `'\'`   |
|**header**<br>タイプ: `Boolean`<br>CSVファイルにヘッダーがあるかどうかを指定します。スキーマを推定する際、Auto Loaderはファイルにヘッダーがあることを前提にします。<br>デフォルト値: `false`   |
|**ignoreLeadingWhiteSpace**<br>タイプ: `Boolean`<br>パースされた値それぞれの頭の空白を無視するかどうかを指定します。<br>デフォルト値: `false`   |
|**ignoreTrailingWhiteSpace**<br>タイプ: `Boolean`<br>パースされた値それぞれの後ろの空白を無視するかどうかを指定します。<br>デフォルト値: `false`   |
|**inferSchema**<br>タイプ: `Boolean`<br>パースされたCSVレコードのデータ型を推定するか、全てのカラムが`StringType`であると仮定するかどうかを指定します。`true`に設定すると、データに対する追加の処理が必要となります。<br>デフォルト値: `false`   |
|**lineSep**<br>タイプ: `String`<br>二つの連続するCSVレコードの区切り文字です。<br>デフォルト値: None、`\r`, `\r\n`, `\n`をカバーします。   |
|**locale**<br>タイプ: `String`<br>`java.util.Locale`のIDです。JSONのパーシングする際に、デフォルトの日付、タイムスタンプ、数値に影響を与えます。<br>デフォルト値: `US`   |
|**maxCharsPerColumn**<br>タイプ: `Int`<br>パースする値の最大文字数です。メモリーエラーの回避に使うことができます。デフォルトは`-1`であり、無制限となります。<br>デフォルト値: `-1`   |
|**maxColumns**<br>タイプ: `Int`<br>レコードあたりの最大列数のハードリミットです。<br>デフォルト値: `20480`   |
|**mergeSchema**<br>タイプ: `Boolean`<br>複数ファイルのスキーマを推定し、ファイルごとのスキーマをマージするかどうかを指定します。Auto Loaderでスキーマ推定を行う際にはデフォルトで有効化されます。<br>デフォルト値: `false`   |
|**mode**<br>タイプ: `String`<br>不正レコードのハンドリングにおけるパーサーのモードです。`'PERMISSIVE'`, `'DROPMALFORMED'`, `'FAILFAST'`のいずれかとなります。<br>デフォルト値: `PERMISSIVE `|
|**multiLine**<br>タイプ: `Boolean`<br>CSVレコードが複数行にわたるかどうかを指定します。<br>デフォルト値: `false`   |
|**nanValue**<br>タイプ: `String`<br>`FloatType`や`DoubleType`をパーシングする際のnon-a-numberの値の文字列表現を指定します。<br>デフォルト値: `"NaN"`   |
|**negativeInf**<br>タイプ: `String`<br>`FloatType`や`DoubleType`をパーシングする際の負の無限大の文字列表現を指定します。<br>デフォルト値: `"-Inf"`   |
|**nullValue**<br>タイプ: `String`<br>ヌル値を示す文字列です。<br>デフォルト値: `""`   |
|**parserCaseSensitive**(非推奨)<br>タイプ: `Boolean`<br>ファイルを読み込んでいる間にヘッダーで宣言されているカラムをスキーマに割り当てる際に、大文字小文字を区別するかどうかを指定します。有効化されている場合、大文字小文字が異なるカラムは`rescuedDataColumn`にレスキューされます。このオプションは`readerCaseSensitive`によって非推奨となりました。<br>デフォルト値: `false`   |
|**positiveInf**<br>タイプ: `String`<br>`FloatType`や`DoubleType`をパーシングする際の正の無限大の文字列表現を指定します。<br>デフォルト値: `"Inf"`   |
|**quote**<br>タイプ: `Char`<br>値にフィールドの区切り文字が含まれている際に使用されるエスケープ文字です。<br>デフォルト値: `'\'`   |
|**rescuedDataColumn**<br>タイプ: `String`<br>データ型の不一致やスキーマミスマッチ(カラム名の大文字小文字を含む)でパーシングできなかった全てのデータを別のカラムで収集するかどうかを指定します。Auto Loaderを使用する際には、このカラムは自動で含まれます。詳細は[Rescued data column](https://docs.databricks.com/spark/latest/structured-streaming/auto-loader-schema.html#rescue)を参照ください。<br>デフォルト値: None   |
|**sep**あるいは**delimiter**<br>タイプ: `String`<br>カラムの区切り文字です。<br>デフォルト値: `"," `   |
|**timestampFormat**<br>タイプ: `String`<br>パースするタイムスタンプ文字列のフォーマットです。<br>デフォルト値: `yyyy-MM-dd'T'HH:mm:ss[.SSS][XXX]`   |
|**timeZone**<br>タイプ: `String`<br>タイムスタンプと日付をパーシングする際に使用する`java.time.ZoneId`となります。<br>デフォルト値: None   |
|**unescapedQuoteHandling**<br>タイプ: `String`<br>エスケープされていないクオート(引用符)の取り扱い戦略を指定します。オプションは以下の通りとなります。<ul><li>`STOP_AT_CLOSING_QUOTE`:　入力にエスケープされていないクオートが見つかった場合、クオートの文字列を蓄積し、クローズするクオートが見つかるまで値を引用された値としてパーシングを継続します。<li>`BACK_TO_DELIMITER`: 入力にエスケープされていないクオートが見つかった場合、値は引用されていないものとみなされます。これによって、`sep `で定義されている区切り文字が見つかるまで現状のパースされた値の全ての文字列が蓄積されます。値に区切り文字が含まれていない場合、パーサーは区切り文字か行の終わりを見つけるまで文字の蓄積を継続します。<li>`STOP_AT_DELIMITER`: 入力にエスケープされていないクオートが見つかった場合、値は引用されていないものとみなされます。これによって、`sep `で定義されている区切り文字か行の終わりが見つかるまで全ての文字列が蓄積されます。<li>`SKIP_VALUE`: 入力にエスケープされていないクオートが見つかった場合、当該の値でパスされたコンテンツは(次の区切り文字が見つかるまで)スキップされ、`nullValue `で設定された値になります。<li>`RAISE_ERROR`: 入力にエスケープされていないクオートが見つかった場合、`TextParsingException`エラーを引き起こします。</ul><br>デフォルト値: `STOP_AT_DELIMITER`   |

## `PARQUET`オプション

| オプション |
|:--|
|**datetimeRebaseMode**<br>タイプ: `String`<br>JulianとProleptic Gregorianカレンダーの間のDATEとTIMESTAMPのリベースを制御します。`EXCEPTION`, `LEGACY`, `CORRECTED`を指定できます。<br>デフォルト値: `LEGACY`    |
|**int96RebaseMode**<br>タイプ: `String`<br>JulianとProleptic Gregorianカレンダーの間のINT96のリベースを制御します。`EXCEPTION`, `LEGACY`, `CORRECTED`を指定できます。<br>デフォルト値: `LEGACY`   |
|**mergeSchema**<br>タイプ: `Boolean`<br>複数のファイルのスキーマを推定し、ファイルごとのスキーマをマージするかどうかを指定します。<br>デフォルト値: `false`   |

## `AVRO`オプション

| オプション |
|:--|
|**avroSchema**<br>タイプ: `String`<br>ユーザーがAvroフォーマットで指定できるオプションのスキーマです。Avroを読み込んでいる際、このオプションに実際のAvroのスキーマと違うが互換性のある進化スキーマを設定することができます。<br>デフォルト値: None   |
|**datetimeRebaseMode**<br>タイプ: `String`<br>JulianとProleptic Gregorianカレンダーの間のDATEとTIMESTAMPのリベースを制御します。`EXCEPTION`, `LEGACY`, `CORRECTED`を指定できます。<br>デフォルト値: `LEGACY`      |
|**mergeSchema**<br>タイプ: `Boolean`<br>複数のファイルのスキーマを推定し、ファイルごとのスキーマをマージするかどうかを指定します。<br>デフォルト値: `false`     |

## `BINARYFILE`オプション

バイナリーファイルには追加の設定オプションはありません。

## `TEXT`オプション

| オプション |
|:--|
|**encoding**<br>タイプ: `String`<br>CSVファイルのエンコーディング名を指定します。オプションについては`java.nio.charset.Charset`をご覧ください。<br>デフォルト値: `UTF-8`   |
|**lineSep**<br>タイプ: `String`<br>二つの連続するテキストレコードの区切り文字です。<br>デフォルト値: None、`\r`, `\r\n`, `\n`をカバーします。   |
|**wholeText**<br>タイプ: `Boolean`<br>ファイルを単一のレコードとして読み込むかどうかを指定します。<br>デフォルト値: `false`   |

## `ORC`オプション

| オプション |
|:--|
|**mergeSchema**<br>タイプ: `Boolean`<br>複数のファイルのスキーマを推定し、ファイルごとのスキーマをマージするかどうかを指定します。<br>デフォルト値: `false`   |

# 関連ドキュメント

- [Credentials](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-external-locations.html#external-location)
- [DELETE](https://docs.databricks.com/spark/latest/spark-sql/language-manual/delta-delete-from.html)
- [INSERT](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-syntax-dml-insert-into.html)
- [MERGE](https://docs.databricks.com/spark/latest/spark-sql/language-manual/delta-merge-into.html)
- [PARTITION](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-partition.html#partition)
- [query](https://docs.databricks.com/spark/latest/spark-sql/language-manual/sql-ref-syntax-qry-query.html)
- [UPDATE](https://docs.databricks.com/spark/latest/spark-sql/language-manual/delta-update.html)

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)