クラウドストレージからTiDB Cloud StarterまたはEssentialにCSVファイルをインポートする
このドキュメントでは、Amazon Simple Storage Service (Amazon S3)、Google Cloud Storage (GCS)、Azure Blob Storage、または Alibaba Cloud Object Storage Service (OSS) からTiDB Cloud Starter またはTiDB Cloud Essential に CSV ファイルをインポートする方法について説明します。
注記:
TiDB Cloud Dedicated については、 クラウドストレージからTiDB Cloud DedicatedにCSVファイルをインポートする参照してください。
制限事項
- データの一貫性を確保するため、 TiDB Cloud空のテーブルへのCSVファイルのインポートのみが許可されています。既にデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントに従って一時的な空のテーブルにデータをインポートし、その後、
INSERT SELECT
ステートメントを使用してデータを対象の既存テーブルにコピーします。
ステップ1.CSVファイルを準備する
CSV ファイルが 256 MB より大きい場合は、サイズがそれぞれ約 256 MB の小さなファイルに分割することを検討してください。
TiDB Cloudは非常に大きなCSVファイルのインポートをサポートしていますが、256MB程度の複数の入力ファイルで最適なパフォーマンスを発揮します。これは、 TiDB Cloudが複数のファイルを並行して処理できるため、インポート速度が大幅に向上するからです。
CSV ファイルに次のように名前を付けます。
CSV ファイルにテーブル全体のすべてのデータが含まれている場合は、データをインポートするときに
${db_name}.${table_name}
テーブルにマップされる${db_name}.${table_name}.csv
形式でファイルに名前を付けます。1つのテーブルのデータが複数のCSVファイルに分割されている場合は、これらのCSVファイルに数値のサフィックスを追加してください。例:
${db_name}.${table_name}.000001.csv
と${db_name}.${table_name}.000002.csv
数値のサフィックスは連続していなくても構いませんが、昇順である必要があります。また、すべてのサフィックスの長さを揃えるため、数値の前にゼロを追加する必要があります。TiDB Cloudは
.gz
.zst
の形式の圧縮ファイルのインポートをサポートしています:.gzip
。.zstd
されたCSVファイルをインポートする場合は、ファイル名.snappy
${db_name}.${table_name}.${suffix}.csv.${compress}
形式にしてください。13${suffix}
オプションで、「000001」などの任意の整数にすることができます。例えば、trips.000001.csv.gz
ファイルをbikeshare.trips
テーブルにインポートする場合は、ファイル名をbikeshare.trips.000001.csv.gz
に変更する必要があります。
注記:
- パフォーマンスを向上させるには、各圧縮ファイルのサイズを 100 MiB に制限することをお勧めします。
- Snappy 圧縮ファイルは公式Snappyフォーマットである必要があります。その他の Snappy 圧縮形式はサポートされていません。
- 非圧縮ファイルの場合、前述のルールに従って CSV ファイル名を更新できないケース (たとえば、CSV ファイル リンクが他のプログラムでも使用されている場合) は、ファイル名を変更せずに、 ステップ4のマッピング設定を使用してソース データを単一のターゲット テーブルにインポートできます。
ステップ2. ターゲットテーブルスキーマを作成する
CSV ファイルにはスキーマ情報が含まれていないため、CSV ファイルからTiDB Cloudにデータをインポートする前に、次のいずれかの方法でテーブル スキーマを作成する必要があります。
方法 1: TiDB Cloudで、ソース データのターゲット データベースとテーブルを作成します。
方法 2: CSV ファイルが保存されている Amazon S3、GCS、Azure Blob Storage、または Alibaba Cloud Object Storage Service ディレクトリで、次のようにソース データのターゲット テーブル スキーマ ファイルを作成します。
ソース データのデータベース スキーマ ファイルを作成します。
CSVファイルがステップ1の命名規則に従っている場合、データのインポート時にデータベーススキーマファイルはオプションです。それ以外の場合は、データベーススキーマファイルは必須です。
各データベーススキーマファイルは
${db_name}-schema-create.sql
形式で、CREATE DATABASE
DDLステートメントを含んでいる必要があります。このファイルを使用して、 TiDB Cloudはデータをインポートする際に、データを格納するための${db_name}
データベースを作成します。たとえば、次のステートメントを含む
mydb-scehma-create.sql
ファイルを作成すると、 TiDB Cloud はデータをインポートするときにmydb
データベースを作成します。CREATE DATABASE mydb;ソース データのテーブル スキーマ ファイルを作成します。
CSV ファイルが保存されている Amazon S3、GCS、Azure Blob Storage、または Alibaba Cloud Object Storage Service ディレクトリにテーブル スキーマ ファイルを含めない場合、 TiDB Cloud はデータをインポートするときに対応するテーブルを作成しません。
各テーブルスキーマファイルは
${db_name}.${table_name}-schema.sql
形式で、CREATE TABLE
DDLステートメントを含む必要があります。このファイルを使用することで、 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
ファイルには1つのDDL文のみを含めることができます。ファイルに複数のDDL文が含まれている場合、最初の文のみが有効になります。
ステップ3. クロスアカウントアクセスを構成する
TiDB Cloud がAmazon S3、GCS、Azure Blob Storage、または Alibaba Cloud Object Storage Service バケット内の CSV ファイルにアクセスできるようにするには、次のいずれかを実行します。
CSV ファイルが Amazon S3 にある場合は、クラスターごとにAmazon S3 アクセスを構成する 。
バケットにアクセスするには、AWS アクセスキーまたはロール ARN のいずれかを使用できます。完了したら、アクセスキー(アクセスキー ID とシークレットアクセスキーを含む)またはロール ARN の値をメモしておいてください。これらはステップ4で必要になります。
CSV ファイルが GCS にある場合は、クラスタごとにGCS アクセスを構成する 。
CSV ファイルが Azure Blob Storage にある場合は、クラスターごとにAzure Blob Storage アクセスを構成する 。
CSV ファイルが Alibaba Cloud Object Storage Service (OSS) にある場合は、クラスターごとにAlibaba Cloud Object Storage Service (OSS) アクセスを構成する 。
ステップ4.CSVファイルをインポートする
CSV ファイルをTiDB Cloud Starter またはTiDB Cloud Essential にインポートするには、次の手順を実行します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
Cloud Storage からデータをインポートをクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージプロバイダー: Amazon S3を選択します。
- ソースファイルURI :
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
s3://[bucket_name]/[data_source_folder]/[file_name].csv
。たとえば、s3://sampledata/ingest/TableName.01.csv
。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを次の形式で入力します
s3://[bucket_name]/[data_source_folder]/
。たとえば、s3://sampledata/ingest/
。
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
- 認証情報: バケットにアクセスするには、AWS ロール ARN または AWS アクセスキーのいずれかを使用できます。詳細については、 Amazon S3 アクセスを構成する参照してください。
- AWS ロール ARN : AWS ロール ARN 値を入力します。
- AWS アクセスキー: AWS アクセスキー ID と AWS シークレットアクセスキーを入力します。
「次へ」をクリックします。
宛先マッピングセクションで、ソース ファイルをターゲット テーブルにマップする方法を指定します。
ソース ファイル URIにディレクトリが指定されている場合は、自動マッピングにファイル命名規則を使用するオプションがデフォルトで選択されます。
注記:
ソースファイルURIに単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データのインポート対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイルの命名規則続くすべてのソース ファイルを対応するテーブルに自動的にマップするようにするには、このオプションを選択したまま、データ形式としてCSVを選択します。
ソース CSV ファイルをターゲット データベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].csv
形式で入力します。例:TableName.01.csv
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.csv
:my-data
で始まり、その後にmy-data1.csv
やmy-data2.csv
などの 1 文字が続くすべての CSV ファイルと一致します。my-data*.csv
:my-data-2023.csv
やmy-data-final.csv
など、my-data
で始まるすべての CSV ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
「Cloud Storage からデータをインポート」をクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージ プロバイダー: Google Cloud Storageを選択します。
- ソースファイルURI :
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
[gcs|gs]://[bucket_name]/[data_source_folder]/[file_name].csv
。たとえば、[gcs|gs]://sampledata/ingest/TableName.01.csv
。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを次の形式で入力します
[gcs|gs]://[bucket_name]/[data_source_folder]/
。たとえば、[gcs|gs]://sampledata/ingest/
。
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
- 認証情報: GCS IAMロールのサービスアカウントキーを使用してバケットにアクセスできます。詳細については、 GCS アクセスを構成するご覧ください。
「次へ」をクリックします。
宛先マッピングセクションで、ソース ファイルをターゲット テーブルにマップする方法を指定します。
ソース ファイル URIにディレクトリが指定されている場合は、自動マッピングにファイル命名規則を使用するオプションがデフォルトで選択されます。
注記:
ソースファイルURIに単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データのインポート対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイルの命名規則続くすべてのソース ファイルを対応するテーブルに自動的にマップするようにするには、このオプションを選択したまま、データ形式としてCSVを選択します。
ソース CSV ファイルをターゲット データベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].csv
形式で入力します。例:TableName.01.csv
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.csv
:my-data
で始まり、その後にmy-data1.csv
やmy-data2.csv
などの 1 文字が続くすべての CSV ファイルと一致します。my-data*.csv
:my-data-2023.csv
やmy-data-final.csv
など、my-data
で始まるすべての CSV ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
「Cloud Storage からデータをインポート」をクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージ プロバイダー: Azure Blob Storageを選択します。
- ソースファイルURI :
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
[azure|https]://[bucket_name]/[data_source_folder]/[file_name].csv
。たとえば、[azure|https]://sampledata/ingest/TableName.01.csv
。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを次の形式で入力します
[azure|https]://[bucket_name]/[data_source_folder]/
。たとえば、[azure|https]://sampledata/ingest/
。
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
- 認証情報:バケットにアクセスするには、Shared Access Signature(SAS)トークンを使用できます。詳細については、 Azure Blob Storage アクセスを構成するご覧ください。
「次へ」をクリックします。
宛先マッピングセクションで、ソース ファイルをターゲット テーブルにマップする方法を指定します。
ソース ファイル URIにディレクトリが指定されている場合は、自動マッピングにファイル命名規則を使用するオプションがデフォルトで選択されます。
注記:
ソースファイルURIに単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データのインポート対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイルの命名規則続くすべてのソース ファイルを対応するテーブルに自動的にマップするようにするには、このオプションを選択したまま、データ形式としてCSVを選択します。
ソース CSV ファイルをターゲット データベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].csv
形式で入力します。例:TableName.01.csv
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.csv
:my-data
で始まり、その後にmy-data1.csv
やmy-data2.csv
などの 1 文字が続くすべての CSV ファイルと一致します。my-data*.csv
:my-data-2023.csv
やmy-data-final.csv
など、my-data
で始まるすべての CSV ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
ターゲット クラスターのインポートページを開きます。
TiDB Cloudコンソールにログインし、プロジェクトのクラスターページに移動します。
ヒント:
左上隅のコンボ ボックスを使用して、組織、プロジェクト、クラスターを切り替えることができます。
ターゲット クラスターの名前をクリックして概要ページに移動し、左側のナビゲーション ペインで[データ] > [インポート]をクリックします。
「Cloud Storage からデータをインポート」をクリックします。
「クラウド ストレージからデータをインポート」ページで、次の情報を入力します。
- ストレージプロバイダー: Alibaba Cloud OSSを選択します。
- ソースファイルURI :
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
oss://[bucket_name]/[data_source_folder]/[file_name].csv
。たとえば、oss://sampledata/ingest/TableName.01.csv
。 - 複数のファイルをインポートする場合は、ソースフォルダのURIを次の形式で入力します
oss://[bucket_name]/[data_source_folder]/
。たとえば、oss://sampledata/ingest/
。
- 1つのファイルをインポートする場合は、ソースファイルのURIを次の形式で入力します
- 認証情報: アクセスキーペアを使用してバケットにアクセスできます。詳細については、 Alibaba Cloud Object Storage Service (OSS) アクセスを構成するご覧ください。
「次へ」をクリックします。
宛先マッピングセクションで、ソース ファイルをターゲット テーブルにマップする方法を指定します。
ソース ファイル URIにディレクトリが指定されている場合は、自動マッピングにファイル命名規則を使用するオプションがデフォルトで選択されます。
注記:
ソースファイルURIに単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データのインポート対象となるデータベースとテーブルを選択するだけで済みます。
TiDB Cloud がファイルの命名規則続くすべてのソース ファイルを対応するテーブルに自動的にマップするようにするには、このオプションを選択したまま、データ形式としてCSVを選択します。
ソース CSV ファイルをターゲット データベースおよびテーブルに関連付けるためのマッピング ルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。
ソース: ファイル名のパターンを
[file_name].csv
形式で入力します。例:TableName.01.csv
。ワイルドカードを使用して複数のファイルに一致させることもできます。6と*
?
ワイルドカードのみがサポートされています。my-data?.csv
:my-data
で始まり、その後にmy-data1.csv
やmy-data2.csv
などの 1 文字が続くすべての CSV ファイルと一致します。my-data*.csv
:my-data-2023.csv
やmy-data-final.csv
など、my-data
で始まるすべての CSV ファイルに一致します。
ターゲット データベースとターゲット テーブル: データをインポートするターゲット データベースとテーブルを選択します。
「次へ」をクリックします。TiDB TiDB Cloud はそれに応じてソースファイルをスキャンします。
スキャン結果を確認し、見つかったデータ ファイルと対応するターゲット テーブルをチェックして、 [インポートの開始] をクリックします。
インポートの進行状況に「完了」と表示されたら、インポートされたテーブルを確認します。
インポート タスクを実行するときに、サポートされていない変換または無効な変換が検出されると、 TiDB Cloud はインポート ジョブを自動的に終了し、インポート エラーを報告します。
インポート エラーが発生した場合は、次の手順を実行します。
- 部分的にインポートされたテーブルを削除します。
- テーブルスキーマファイルを確認してください。エラーがある場合は、テーブルスキーマファイルを修正してください。
- CSV ファイル内のデータ型を確認します。
- インポートタスクをもう一度試してください。
トラブルシューティング
データのインポート中に警告を解決する
[インポートの開始]をクリックした後、 can't find the corresponding source files
などの警告メッセージが表示された場合は、正しいソース ファイルを指定するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、 [詳細設定]を使用して変更を加えることで、この問題を解決します。
これらの問題を解決した後、データを再度インポートする必要があります。
インポートされたテーブルに行が 0 行あります
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。行数が0の場合、入力したバケットURIに一致するデータファイルが存在しないことを意味します。この場合、正しいソースファイルを指定するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、詳細設定を使用して変更を加えることで問題を解決してください。その後、該当するテーブルを再度インポートしてください。