Amazon S3 または GCS からTiDB Cloudに CSV ファイルをインポートする
このドキュメントでは、圧縮されていない CSV ファイルを Amazon Simple Storage Service (Amazon S3) または Google Cloud Storage (GCS) からTiDB Cloudにインポートする方法について説明します。
ノート:
- CSV ソース ファイルが圧縮されている場合は、インポートする前にまずファイルを解凍する必要があります。
- データの一貫性を確保するために、 TiDB Cloudでは CSV ファイルを空のテーブルにのみインポートできます。既にデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントに従って、 TiDB Cloudを使用してデータを一時的な空のテーブルにインポートし、
INSERT SELECTステートメントを使用してデータをターゲットの既存のテーブルにコピーします。- Dedicated Tier クラスターに変更フィードがある場合、現在のデータのインポート機能では物理インポート モード .このモードでは、インポートされたデータは変更ログを生成しないため、変更フィードはインポートされたデータを検出できません。
ステップ 1.CSV ファイルを準備する
CSV ファイルが 256 MB より大きい場合は、それぞれのサイズが約 256 MB の小さなファイルに分割することを検討してください。
TiDB Cloudは、非常に大きな CSV ファイルのインポートをサポートしていますが、サイズが 256 MB 前後の複数の入力ファイルで最高のパフォーマンスを発揮します。これは、 TiDB Cloudが複数のファイルを並行して処理できるため、インポート速度が大幅に向上する可能性があるためです。
次のように CSV ファイルに名前を付けます。
CSV ファイルにテーブル全体のすべてのデータが含まれている場合は、ファイルに
${db_name}.${table_name}.csv形式の名前を付けます。これは、データをインポートするときに${db_name}.${table_name}テーブルにマップされます。1 つのテーブルのデータが複数の CSV ファイルに分割されている場合は、これらの CSV ファイルに数値のサフィックスを追加します。たとえば、
${db_name}.${table_name}.000001.csvと${db_name}.${table_name}.000002.csvです。数値サフィックスは連続していなくてもかまいませんが、昇順でなければなりません。また、数字の前にゼロを追加して、すべてのサフィックスが同じ長さになるようにする必要もあります。
ノート:
上記のルールに従って CSV ファイル名を更新できない場合 (たとえば、CSV ファイルのリンクが他のプログラムでも使用されている場合など) は、ファイル名を変更せずにステップ 4のファイル パターンを使用してソース データをインポートできます。単一のターゲット テーブルに。
ステップ 2. ターゲット表スキーマを作成する
CSV ファイルにはスキーマ情報が含まれていないため、CSV ファイルからTiDB Cloudにデータをインポートする前に、次のいずれかの方法を使用してテーブル スキーマを作成する必要があります。
方法 1: TiDB Cloudで、ソース データのターゲット データベースとテーブルを作成します。
方法 2: CSV ファイルが配置されている Amazon S3 または GCS ディレクトリで、ソース データのターゲット テーブル スキーマ ファイルを次のように作成します。
ソース データのデータベース スキーマ ファイルを作成します。
CSV ファイルがステップ1の命名規則に従っている場合、データベース スキーマ ファイルはデータ インポートのオプションです。それ以外の場合、データベース スキーマ ファイルは必須です。
各データベース スキーマ ファイルは
${db_name}-schema-create.sql形式で、CREATE DATABASEDDL ステートメントを含む必要があります。このファイルを使用すると、 TiDB Cloudは、データをインポートするときにデータを格納するための${db_name}のデータベースを作成します。たとえば、次のステートメントを含む
mydb-scehma-create.sqlファイルを作成すると、データをインポートするときにTiDB Cloudによってmydbデータベースが作成されます。CREATE DATABASE mydb;ソース データのテーブル スキーマ ファイルを作成します。
CSV ファイルが配置されている Amazon S3 または GCS ディレクトリにテーブル スキーマ ファイルを含めない場合、データをインポートするときに、 TiDB Cloudは対応するテーブルを作成しません。
各テーブル スキーマ ファイルは
${db_name}.${table_name}-schema.sql形式で、CREATE TABLEDDL ステートメントを含む必要があります。このファイルを使用すると、データをインポートすると、 TiDB Cloudは${db_name}データベースに${db_table}テーブルを作成します。たとえば、次のステートメントを含む
mydb.mytable-schema.sqlファイルを作成すると、データをインポートすると、 TiDB Cloudはmydbデータベースにmytableテーブルを作成します。CREATE TABLE mytable ( ID INT, REGION VARCHAR(20), COUNT INT );ノート:
各
${db_name}.${table_name}-schema.sqlファイルには、単一の DDL ステートメントのみを含める必要があります。ファイルに複数の DDL ステートメントが含まれている場合、最初のステートメントのみが有効になります。
ステップ 3. クロスアカウント アクセスを構成する
TiDB Cloudが Amazon S3 または GCS バケット内の CSV ファイルにアクセスできるようにするには、次のいずれかを実行します。
CSV ファイルが Amazon S3 にある場合は、 Amazon S3 アクセスを構成する .
完了したら、 ステップ 4で必要になるため、Role ARN の値を書き留めます。
CSV ファイルが GCS にある場合は、 GCS アクセスを構成する .
ステップ 4.CSV ファイルをTiDB Cloudにインポートする
CSV ファイルをTiDB Cloudにインポートするには、次の手順を実行します。
TiDB Cloudコンソールにログインしてクラスターページに移動し、左側のナビゲーション バーの上部でターゲット プロジェクトを選択します。
クラスターを見つけて、クラスター領域の右上隅にある [ ... ] をクリックし、 [データのインポート] を選択します。
[インポート] ページで、右上隅にある [データのインポート] をクリックし、 [ S3 から] を選択します。
ヒント:
または、[クラスター] ページでターゲット クラスターの名前をクリックし、[インポート] 領域で [データのインポート] をクリックすることもできます。
[**データのインポート]**ページで、次の情報を提供します。
- データ形式: CSVを選択します。
- バケット URI : CSV ファイルが配置されているバケット URI を選択します。
- Role ARN : (このフィールドは AWS S3 でのみ表示されます): Role ARN のRole ARN 値を入力します。
- ターゲットクラスタ: クラスター名とリージョン名が表示されます。
バケットのリージョンがクラスターと異なる場合は、クロス リージョンのコンプライアンスを確認します。 [次へ] をクリックします。
TiDB Cloudは、指定されたバケット URI でデータにアクセスできるかどうかの検証を開始します。検証後、 TiDB Cloudはデフォルトのファイル命名パターンを使用してデータ ソース内のすべてのファイルをスキャンしようとし、次のページの左側にスキャンの概要結果を返します。
AccessDeniedエラーが発生した場合は、 S3 からのデータ インポート中のアクセス拒否エラーのトラブルシューティングを参照してください。ファイル パターンを変更し、必要に応じてテーブル フィルター ルールを追加します。
ファイル パターン: ファイル名が特定のパターンに一致する CSV ファイルを単一のターゲット テーブルにインポートする場合は、ファイル パターンを変更します。
ノート:
この機能を使用すると、1 つのインポート タスクで一度に 1 つのテーブルにのみデータをインポートできます。この機能を使用してデータを別のテーブルにインポートする場合は、インポートするたびに別のターゲット テーブルを指定して、複数回インポートする必要があります。
ファイル パターンを変更するには、[変更] をクリックし、次のフィールドで CSV ファイルと単一のターゲット テーブルとの間のカスタム マッピング ルールを指定して、[スキャン] をクリックします。その後、提供されたカスタム マッピング ルールを使用して、データ ソース ファイルが再スキャンされます。
ソース ファイル名: インポートする CSV ファイルの名前と一致するパターンを入力します。 CSV ファイルが 1 つしかない場合は、ここにファイル名を直接入力します。 CSV ファイルの名前にはサフィックス
.csvを含める必要があることに注意してください。例えば:
my-data?.csv:my-dataと 1 文字 (my-data1.csvとmy-data2.csvなど) で始まるすべての CSV ファイルが同じターゲット テーブルにインポートされます。my-data*.csv:my-dataで始まるすべての CSV ファイルが同じターゲット テーブルにインポートされます。
ターゲット テーブル名: TiDB Cloudのターゲット テーブルの名前を入力します。これは
${db_name}.${table_name}形式である必要があります。たとえば、mydb.mytableです。このフィールドは特定のテーブル名を 1 つしか受け付けないため、ワイルドカードはサポートされていないことに注意してください。
テーブル フィルター: インポートするテーブルをフィルター処理する場合は、この領域でテーブル フィルター ルールを指定できます。
例えば:
db01.*:db01データベース内のすべてのテーブルがインポートされます。!db02.*:db02データベースのテーブルを除き、他のすべてのテーブルがインポートされます。!は、インポートする必要のないテーブルを除外するために使用されます。*.*: すべてのテーブルがインポートされます。
詳細については、 テーブル フィルタの構文を参照してください。
[次へ] をクリックします。
プレビューページでは、データのプレビューを表示できます。プレビューされたデータが予期したものと異なる場合は、[ここをクリックして csv 構成を編集します] リンクをクリックして、区切り記号、区切り記号、ヘッダー、非 null、null、バックスラッシュ エスケープ、trim-last-separator などの CSV 固有の構成を更新します。 .詳細については、 データをインポートするための CSV 構成を参照してください。
ノート:
区切り記号、区切り記号、およびヌルの構成では、英数字と特定の特殊文字の両方を使用できます。サポートされている特殊文字には、
\t、\b、\n、\r、\f、および\u0001が含まれます。[**インポートの開始] を**クリックします。
インポートの進行状況がFinishedと表示されたら、インポートされたテーブルを確認します。
数値がゼロの場合は、[ソース ファイル名] フィールドに入力した値と一致するデータ ファイルがないことを意味します。この場合、[ソース ファイル名] フィールドに入力ミスがないことを確認してから、もう一度やり直してください。
インポート タスクを実行するときに、サポートされていない変換または無効な変換が検出された場合、 TiDB Cloudはインポート ジョブを自動的に終了し、インポート エラーを報告します。
インポート エラーが発生した場合は、次の手順を実行します。
- 部分的にインポートされたテーブルを削除します。
- テーブル スキーマ ファイルを確認してください。エラーがある場合は、テーブル スキーマ ファイルを修正します。
- CSV ファイルのデータ型を確認してください。
- インポート タスクを再試行します。
