データをインポートするための CSV 構成
このドキュメントでは、 TiDB Cloud上のデータのインポート サービスの CSV 構成を紹介します。
以下は、 TiDB Cloudの Import Data サービスを使用して CSV ファイルをインポートする場合の CSVConfiguration / コンフィグレーションウィンドウです。詳細については、 Amazon S3 または GCS からTiDB Cloudに CSV ファイルをインポートするを参照してください。
セパレーター
定義: フィールド区切りを定義します。 1 つまたは複数の文字を指定できますが、空にすることはできません。
一般的な値:
- CSV (コンマ区切り値) の場合は
,。上のスクリーンショットに示すように、「1」、「Michael」、および「male」は 3 つのフィールドを表します。 - TSV (タブ区切り値) の場合は
"\t"。
- CSV (コンマ区切り値) の場合は
デフォルト:
,
ヘッダ
定義:すべてのCSV ファイルにヘッダー行が含まれているかどうか。 Headerが
Trueの場合、最初の行が列名として使用されます。 HeaderがFalseの場合、最初の行は通常のデータ行として扱われます。デフォルト:
True
デリミタ
定義: 引用に使用される区切り文字を定義します。 Delimiterが空の場合、すべてのフィールドは引用符で囲まれません。
一般的な値:
'"'は、二重引用符でフィールドを引用します。上のスクリーンショットに示すように、"Michael","male"は 2 つのフィールドを表します。 2 つのフィールドの間に,がなければならないことに注意してください。データが"Michael""male"(,なし) の場合、インポート タスクは解析に失敗します。データが"Michael,male"の場合 (二重引用符が 1 つだけ)、1 つのフィールドとして解析されます。''は引用を無効にします。
デフォルト:
"
バックスラッシュエスケープ
定義: フィールド内のバックスラッシュをエスケープ文字として解析するかどうか。 Backslash-escapeが
Trueの場合、次のシーケンスが認識され、変換されます。他のすべての場合 (たとえば、
\") では、バックスラッシュが取り除かれ、フィールドに次の文字 (") が残ります。左の文字には特別な役割 (区切り文字など) はなく、単なる通常の文字です。引用符は、バックスラッシュがエスケープ文字として解析されるかどうかには影響しません。例として、スクリーンショットのフィールドを取り上げます。
- 値が
Trueの場合、"nick name is \"Mike\""はnick name is "Mike"として解析され、ターゲット テーブルに書き込まれます。 - 値が
Falseの場合、"nick name is \"、Mike\、および""の 3 つのフィールドとして解析されます。しかし、フィールドが互いに分離されていないため、正しく解析できません。
標準の CSV ファイルの場合、記録するフィールドに二重引用符が含まれている場合は、二重引用符を 2 つ使用してエスケープする必要があります。この場合、
Backslash-escape = Trueを使用すると解析エラーが発生しますが、Backslash-escape = Falseを使用すると正しく解析されます。一般的なシナリオは、インポートされたフィールドに JSON コンテンツが含まれている場合です。標準の CSV JSON フィールドは通常、次のように格納されます。"{""key1"":""val1"", ""key2"": ""val2""}"この場合、
Backslash-escape = Falseを設定すると、フィールドは次のようにデータベースに正しくエスケープされます。{"key1": "val1", "key2": "val2"}以下のようにCSVソースファイルの内容をJSONで保存する場合は、以下のように
Backslash-escape = Trueを設定することを検討してください。ただし、これは CSV の標準形式ではありません。"{\"key1\": \"val1\", \"key2\":\"val2\" }"- 値が
デフォルト:
True
非 null と Null
定義: Not-null設定は、すべてのフィールドが null 非許容であるかどうかを制御します。 Not-nullが
Falseの場合、 Nullで指定された文字列は、特定の値ではなく SQL NULL に変換されます。引用符は、フィールドが null であるかどうかには影響しません。
たとえば、次の CSV ファイルでは次のようになります。
column_A,column_B,column_C \N,"\N",デフォルト設定 (
Not-null = False; Null = '\N') では、列column_Aとcolumn_Bは両方とも、TiDB にインポートされた後に NULL に変換されます。列column_Cは空の文字列''ですが、NULL ではありません。デフォルト: Not-null=False、Null=\N
トリムラストセパレーター
定義:
Separatorを行末記号として扱い、末尾の区切り文字をすべて削除するかどうか。たとえば、次の CSV ファイルでは次のようになります。
A,,B,,Trim-last-separator = Falseの場合、これは 5 つのフィールド('A', '', 'B', '', '')の行として解釈されます。Trim-last-separator = Trueの場合、これは 3 つのフィールド('A', '', 'B')の行として解釈されます。
デフォルト:
False
