📣新登場!TiDB Cloud BYOC、TiDB Cloud Filesystem、PostgreSQL-compatible TiDB Cloud Starter がパブリックプレビュー中。このページは自動翻訳されたものです。原文はこちらからご覧ください。

入出力ファイル形式



TiDB Cloud Lake は、データのロードやアンロードのソースおよびターゲットとして、さまざまなファイル形式を受け入れます。このページでは、サポートされているファイル形式と利用可能なオプションについて説明します。

構文

ステートメントでファイル形式を指定するには、次の構文を使用します。

-- Specify a standard file format ... FILE_FORMAT = ( TYPE = { CSV | TSV | NDJSON | PARQUET | LANCE | ORC | AVRO } [ formatTypeOptions ] ) -- Specify a custom file format ... FILE_FORMAT = ( FORMAT_NAME = '<your-custom-format>' )

TiDB Cloud Lake は、COPY または Select ステートメントで使用するファイル形式を、次の優先順位で決定します。

  1. まず、ステートメント内で FILE_FORMAT が明示的に指定されているかを確認します。
  2. 操作で FILE_FORMAT が指定されていない場合は、stage 作成時にその stage に対して最初に定義されたファイル形式を使用します。
  3. stage 作成時にファイル形式が定義されていない場合、TiDB Cloud Lake はデフォルトで PARQUET 形式を使用します。

formatTypeOptions

formatTypeOptions には、ファイルに関するその他の形式の詳細を記述するための 1 つ以上のオプションが含まれます。オプションはファイル形式によって異なります。サポートされている各ファイル形式で利用可能なオプションについては、以下のセクションを参照してください。

formatTypeOptions ::= RECORD_DELIMITER = '<character>' FIELD_DELIMITER = '<character>' SKIP_HEADER = <integer> QUOTE = '<character>' ESCAPE = '<character>' NAN_DISPLAY = '<string>' ROW_TAG = '<string>' COMPRESSION = AUTO | GZIP | BZ2 | BROTLI | ZSTD | DEFLATE | RAW_DEFLATE | XZ | NONE

CSV オプション

TiDB Cloud Lake の CSV は RFC 4180 に準拠しており、次の条件に従います。

  • 文字列に QUOTE、ESCAPE、RECORD_DELIMITER、または FIELD_DELIMITER の文字が含まれる場合、その文字列は引用符で囲む必要があります。
  • 引用符で囲まれた文字列内では、QUOTE を除き、どの文字もエスケープされません。
  • FIELD_DELIMITER と QUOTE の間に空白を入れてはいけません。

RECORD_DELIMITER

ファイル内でレコードを区切る区切り文字です。

利用可能な値:

  • \r\n
  • # や | などの、1 バイトの非英数字文字
  • エスケープ文字付きの文字: \b, \f, \r, \n, \t, \0, \xHH

デフォルト: \n

FIELD_DELIMITER

レコード内でフィールドを区切る区切り文字です。

利用可能な値:

  • # や | などの、1 バイトの非英数字文字
  • エスケープ文字付きの文字: \b, \f, \r, \n, \t, \0, \xHH

デフォルト: , (カンマ)

QUOTE (ロードのみ)

値を引用符で囲むために使用する文字です。

データのロードでは、文字列に QUOTE、ESCAPE、RECORD_DELIMITER、または FIELD_DELIMITER の文字が含まれていない限り、引用符は必須ではありません。

利用可能な値: '\'', '"', または '`'(バッククォート)

デフォルト: '"'

ESCAPE

QUOTE 自体に加えて、引用符で囲まれた値の中で引用符文字をエスケープするために使用する文字です。

CSV の一部のバリアントでは、引用符を二重にしてエスケープする代わりに、\ のような特別なエスケープ文字を使って引用符をエスケープします。

利用可能な値: '\\' または '' (空。二重引用のみを使用することを意味します)

デフォルト: ''

SKIP_HEADER (ロードのみ)

ファイルの先頭からスキップする行数です。

デフォルト: 0

TRIM_SPACE (ロードのみ)

型変換の前に、各フィールド値の先頭および末尾から ASCII 空白文字を削除します。

削除対象の文字セットは ASCII 空白文字に固定されており、スペース、タブ、LF、CR、VT、FF が含まれます。

CSV では、csv-core がフィールドを抽出した後にトリミングが行われるため、引用符で囲まれたフィールド内容もトリミングされます。

デフォルト: false

OUTPUT_HEADER (アンロードのみ)

カラム名を含むヘッダー行を出力に含めます。

デフォルト: false

QUOTE_STYLE (アンロードのみ)

出力時に CSV の値をどのように引用符で囲むかを制御します。

利用可能な値説明
QUOTE_NOT_NULL (Default)CSV 出力内の NULL 以外のすべてのフィールドを引用符で囲みます。
QUOTE_MINIMALCSV 出力形式で必要な場合にのみフィールドを引用符で囲みます。

デフォルト: QUOTE_NOT_NULL

NAN_DISPLAY

"NaN" (Not-a-Number) を表す文字列です。

利用可能な値: リテラル 'nan' または 'null' のみ (大文字小文字は区別されません)

デフォルト: 'NaN'

NULL_DISPLAY

NULL 値を表す文字列です。

データのロード時、引用符なしで一致した値は常に NULL になります。引用符付きで一致した値は、ALLOW_QUOTED_NULLS=true の場合にのみ NULL に変換されます。

デフォルト: '\N'

ALLOW_QUOTED_NULLS (ロードのみ)

引用符付き文字列を NULL 値に変換できるようにします。

NULL_DISPLAY に一致する引用符付き文字列は、このフラグが true の場合にのみ NULL になります。引用符なしで一致した値は、このオプションに関係なく NULL になります。

デフォルト: false

ERROR_ON_COLUMN_COUNT_MISMATCH (ロードのみ)

データファイル内のカラム数が宛先テーブルのカラム数と一致しない場合にエラーを返します。

デフォルト: true

EMPTY_FIELD_AS (ロードのみ)

引用符なしの空フィールド (つまり ,,) を変換する値です。

利用可能な値変換先
NULLNULL。カラムが NULL 許可でない場合はエラーになります。
STRING文字列カラムの場合: ''。
その他のカラムの場合: NULL。NULL 許可でない場合はエラーになります。
FIELD_DEFAULTそのカラムのデフォルト値。

デフォルト: NULL

QUOTED_EMPTY_FIELD_AS (ロードのみ)

引用符付きの空フィールド (つまり ,"",) を変換する値です。

利用可能な値: EMPTY_FIELD_AS と同じ

デフォルト: STRING

BINARY_FORMAT

Binary カラムのエンコード形式です。

利用可能な値: HEX または BASE64

デフォルト: HEX

GEOMETRY_FORMAT

Geometry カラムのエンコード形式です。

利用可能な値: EWKT, WKT, WKB, EWKB, GEOJSON

デフォルト: EWKT

ENCODING (ロードのみ)

ソースファイルの文字セットエンコーディングです。UTF-8 以外のエンコーディングに設定した場合、フィールド解析の前にファイル内容は UTF-8 に変換されます。

Encoding Standard で認識される任意のラベルを使用できます(例: UTF-8, GBK, SHIFT_JIS, EUC-KR, ISO-8859-1)。このラベルは、ファイル形式 / stage の作成時に検証されます。

デフォルト: UTF-8

ENCODING_ERROR_MODE (ロードのみ)

宣言されたエンコーディングで無効なバイト列(またはエンコーディングが UTF-8 の場合は無効な UTF-8)をどのように処理するかを指定します。

利用可能な値説明
STRICT (Default)最初の不正なバイト列でエラーを返して中止します。
REPLACE各不正バイト列を U+FFFD に置き換えて処理を続行します。

デフォルト: STRICT

COMPRESSION

圧縮アルゴリズムです。

利用可能な値説明
NONEファイルが圧縮されていないことを示します。
AUTOファイル拡張子から圧縮形式を自動検出します
GZIP
BZ2
BROTLIBrotli 圧縮ファイルをロード/アンロードする場合は指定が必要です。
ZSTDZstandard v0.8 以降をサポートします。
DEFLATEDeflate 圧縮ファイル(zlib ヘッダー付き、RFC1950)。
RAW_DEFLATEDeflate 圧縮ファイル(ヘッダーなし、RFC1951)。
XZ

デフォルト: NONE

TSV オプション

TiDB Cloud Lake TSV(v1.2.891-nightly 以降では TEXT とも呼ばれます)は、どちらの名前でも同じ形式とオプションを使用します。このページでは、古いサーバーバージョンとの互換性のため、主要な用語として TSV を使用します。

TiDB Cloud Lake TSV には次の条件があります。

  • RECORD_DELIMITER、FIELD_DELIMITER は、区切り文字の衝突 を解決するために \ でエスケープされます
  • 区切り文字に加えて、次の文字もエスケープされます: \b, \f, \r, \n, \t, \0, \\, \'。
  • QUOTE は形式の一部ではありません。
  • NULL は \N として表されます。

RECORD_DELIMITER

ファイル内でレコードを区切る文字です。

利用可能な値:

  • \r\n
  • # や | などの任意の文字。
  • エスケープ文字付きの文字: \b, \f, \r, \n, \t, \0, \xHH

デフォルト: \n

FIELD_DELIMITER

レコード内でフィールドを区切る文字です。

利用可能な値:

  • # や | などの英数字以外の文字。
  • エスケープ文字付きの文字: \b, \f, \r, \n, \t, \0, \xHH

デフォルト: \t (TAB)

SKIP_HEADER (ロードのみ)

CSV の SKIP_HEADER オプションと同じです。

TRIM_SPACE (ロードのみ)

CSV の TRIM_SPACE オプションと同じです。

OUTPUT_HEADER (アンロードのみ)

CSV の OUTPUT_HEADER オプションと同じです。

NAN_DISPLAY

CSV の NAN_DISPLAY オプションと同じです。

NULL_DISPLAY

CSV の NULL_DISPLAY オプションと同じです。

EMPTY_FIELD_AS (ロードのみ)

CSV の EMPTY_FIELD_AS オプションと同じです。

Note: TSV のデフォルトは FIELD_DEFAULT です(デフォルトが NULL の CSV とは異なります)。

デフォルト: FIELD_DEFAULT

ERROR_ON_COLUMN_COUNT_MISMATCH (ロードのみ)

CSV の ERROR_ON_COLUMN_COUNT_MISMATCH オプションと同じです。

ENCODING (ロードのみ)

CSV の ENCODING オプションと同じです。

ENCODING_ERROR_MODE (ロードのみ)

CSV の ENCODING_ERROR_MODE オプションと同じです。

COMPRESSION

CSV の COMPRESSION オプションと同じです。

NDJSON オプション

NULL_FIELD_AS (ロードのみ)

null を変換する値です。

利用可能な値変換先
NULL (Default)NULL 許容フィールドでは NULL。NULL 非許容フィールドではエラー。
FIELD_DEFAULTフィールドのデフォルト値。

MISSING_FIELD_AS (ロードのみ)

欠落しているフィールドを変換する値です。

利用可能な値変換先
ERROR (Default)エラー。
NULLNULL 許容フィールドでは NULL。NULL 非許容フィールドではエラー。
FIELD_DEFAULTフィールドのデフォルト値。

NULL_IF (ロードのみ)

文字列のリストです。ソースファイル内のフィールド値がこれらの文字列のいずれかと一致する場合、その値は NULL としてロードされます。一致は完全一致かつ大文字小文字を区別します。

Syntax: NULL_IF = ('value1', 'value2', ...)

デフォルト: 空 (追加の NULL マーカーなし)

COMPRESSION

CSV の COMPRESSION オプションと同じです。

PARQUET オプション

MISSING_FIELD_AS (ロードのみ)

欠落しているフィールドを変換する値です。

利用可能な値変換先
ERROR (Default)エラー。
FIELD_DEFAULTフィールドのデフォルト値。

NULL_IF (ロードのみ)

NDJSON の NULL_IF オプションと同じです。

USE_LOGIC_TYPE (ロードのみ)

有効にすると、ロード時に Parquet の論理型(例: DATE、TIMESTAMP、DECIMAL などのアノテーション)を使用して対象カラム型を決定します。無効にすると、物理ストレージ型のみが考慮されます。

デフォルト: true

COMPRESSION (アンロードのみ)

parquet ファイル内部ブロックの圧縮アルゴリズムです。

利用可能な値説明
ZSTD (default)Zstandard v0.8 以降をサポートします。
SNAPPYSnappy は、Parquet でよく使用される一般的で高速な圧縮アルゴリズムです。

LANCE オプション

LANCE は、COPY INTO <location> を使用したアンロードでのみサポートされます。

CSV、TSV、NDJSON、Parquet と比較すると、Lance エクスポートでは、TiDB Cloud Lake が直接読み戻せる単独ファイルは 1 つも、または複数も生成されません。代わりに、TiDB Cloud Lake は .lance データファイルと、_versions/ などのデータセットメタデータを含むデータセットディレクトリを書き込みます。

このため、Lance は、Python lance (pip install pylance) などの Lance ツールを使ってデータセットを利用する、下流の機械学習、ベクトル、Arrow ベースのワークフローにより適しています。

フォーマット固有のオプション

Lance にはフォーマット固有のオプションはありません。次を使用します。

FILE_FORMAT = (TYPE = LANCE)

動作上の違い

項目LANCE の動作
サポートされる方向アンロードのみ
TiDB Cloud Lake stage クエリでの読み戻しサポートされません
COPY INTO <table>サポートされません
出力レイアウト.lance ファイルとメタデータを含むデータセットディレクトリ
SINGLE copy オプションサポートされません
PARTITION BYサポートされません

ORC オプション

MISSING_FIELD_AS (ロードのみ)

欠落しているフィールドが変換される値です。

利用可能な値変換先
ERROR (Default)エラー。
FIELD_DEFAULTフィールドのデフォルト値。

AVRO オプション

MISSING_FIELD_AS (ロードのみ)

欠落しているフィールドが変換される値です。

利用可能な値変換先
ERROR (Default)エラー。
FIELD_DEFAULTフィールドのデフォルト値。

NULL_IF (ロードのみ)

NDJSON の NULL_IF オプションと同じです。

USE_LOGIC_TYPE (ロードのみ)

有効にすると、ロード時に対象カラム型を決定するために Avro の論理型(例: date、timestamp-millis、decimal)が使用されます。無効にすると、基になる Avro 型のみが考慮されます。

デフォルト: true

このページは役に立ちましたか?