📣
TiDB Cloud Essential はパブリックプレビュー中です。このページは自動翻訳されたものです。原文はこちらからご覧ください。

TiDB Cloud StarterまたはEssentialにクラウドストレージからCSVファイルをインポートする



このドキュメントでは、Amazon Simple Storage Service (Amazon S3)、Google Cloud Storage (GCS)、Azure Blob Storage、または Alibaba Cloud Object Storage Service (OSS) から CSV ファイルをTiDB Cloud StarterまたはTiDB Cloud Essentialにインポートする方法について説明します。

注記:

TiDB Cloud Dedicatedについては、クラウドストレージからTiDB Cloud DedicatedにCSVファイルをインポートする参照してください。

制限事項

  • データの一貫性を確保するため、 TiDB CloudCSV ファイルのインポートは空のテーブルにのみ許可されています。既にデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントの手順に従って一時的な空のテーブルにデータをインポートし、 INSERT SELECTステートメントを使用してデータを対象の既存のテーブルにコピーします。

ステップ1. CSVファイルを準備する

  1. CSVファイルが256MiBを超える場合は、それぞれ約256MiBのサイズの小さなファイルに分割することを検討してください。

    TiDB Cloudは非常に大きなCSVファイルのインポートをサポートしていますが、256MiB程度のサイズの複数の入力ファイルを扱う場合に最高のパフォーマンスを発揮します。これは、 TiDB Cloudが複数のファイルを並列処理できるため、インポート速度を大幅に向上させることができるからです。

  2. 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のようにです。数値サフィックスは連続していなくても構いませんが、昇順である必要があります。また、すべてのサフィックスの長さが同じになるように、数値の前にゼロを追加する必要があります。

    • TiDB Cloudは、 .gzip.gz.zstd.zst .snappyの各形式の圧縮ファイルのインポートをサポートしています。圧縮 CSV ファイルをインポートする場合は、ファイル名を${db_name}.${table_name}.${suffix}.csv.${compress}形式で指定します。この形式では、 ${suffix}は省略可能で、「000001」などの任意の整数を指定できます。例えば、 trips.000001.csv.gzファイルをbikeshare.tripsテーブルにインポートする場合は、ファイル名をbikeshare.trips.000001.csv.gzに変更する必要があります。

    注記:

    • パフォーマンスを向上させるためには、各圧縮ファイルのサイズを100MiBに制限することをお勧めします。
    • 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のディレクトリに、ソースデータ用のターゲットテーブルスキーマファイルを次のように作成します。

    1. ソースデータ用のデータベーススキーマファイルを作成します。

      ステップ1の命名規則に従ってCSVファイルが作成されている場合、データベーススキーマファイルはデータインポートにおいてオプションです。そうでない場合は、データベーススキーマファイルは必須です。

      各データベーススキーマファイルは${db_name}-schema-create.sql形式である必要があり、 CREATE DATABASE DDLステートメントが含まれている必要があります。このファイルを使用すると、 TiDB Cloudは${db_name}データベースを作成し、データのインポート時にそのデータベースにデータを格納します。

      例えば、次のステートメントを含むmydb-schema-create.sqlファイルを作成すると、 TiDB Cloud はデータをインポートする際にmydbデータベースを作成します。

      CREATE DATABASE mydb;
    2. ソースデータ用のテーブルスキーマファイルを作成します。

      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_table}データベースに${db_name}テーブルを作成します。

      例えば、次のステートメントを含むmydb.mytable-schema.sqlファイルを作成すると、 TiDB Cloud はデータをインポートする際にmytableデータベースにmydbテーブルを作成します。

      CREATE TABLE mytable ( ID INT, REGION VARCHAR(20), COUNT INT );

      注記:

      ${db_name}.${table_name}-schema.sqlファイルには、単一の DDL ステートメントのみを含める必要があります。ファイルに複数の DDL ステートメントが含まれている場合、最初のステートメントのみが有効になります。

ステップ3.アカウント間アクセスの設定

TiDB CloudがAmazon S3、GCS、Azure Blob Storage、またはAlibaba Cloud Object Storage Serviceバケット内のCSVファイルにアクセスできるようにするには、次のいずれかの操作を行います。

ステップ4.CSVファイルをインポートする

CSVファイルをTiDB Cloud StarterまたはTiDB Cloud Essentialにインポートするには、以下の手順に従ってください。

    1. 対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。

      1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

        ヒント:

        複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

      2. 対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。

    2. 「クラウドストレージからデータをインポート」をクリックします。

    3. 「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。

      • ストレージプロバイダー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/
      • 認証情報: AWS ロール ARN または AWS アクセス キーを使用してバケットにアクセスできます。詳細については、 Amazon S3へのアクセスを設定する参照してください。
        • AWSロールARN :AWSロールARNの値を入力してください。
        • AWSアクセスキー:AWSアクセスキーIDとAWSシークレットアクセスキーを入力してください。
    4. 「次へ」をクリックしてください。

    5. 「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。

      ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。

      注記:

      ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。

      • TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマッピングするには、このオプションを選択したままにして、データ形式としてCSVを選択します。

      • ソースCSVファイルをターゲットデータベースおよびテーブルに関連付けるためのマッピングルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。

        • ソース: ファイル名のパターンを[file_name].csvの形式で入力してください。例: TableName.01.csv 。ワイルドカードを使用して複数のファイルを照合することもできます。 *?ワイルドカードのみがサポートされています。

          • my-data?.csv : my-data my-data1.csvmy-data2.csvのような 1 文字が続くすべての CSV ファイルに一致します。
          • my-data*.csv : my-dataで始まるすべての CSV ファイルに一致します。たとえばmy-data-2023.csvmy-data-final.csvなどです。
        • 対象データベース対象テーブル:データをインポートする対象データベースとテーブルを選択します。

    6. 「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。

    7. スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。

    8. インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。

    1. 対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。

      1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

        ヒント:

        複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

      2. 対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。

    2. 「クラウドストレージからデータをインポート」をクリックします。

    3. 「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。

      • ストレージプロバイダー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/
      • 認証情報: GCS IAM役割サービス アカウント キーを使用してバケットにアクセスできます。詳細については、 GCSへのアクセスを設定する参照してください。
    4. 「次へ」をクリックしてください。

    5. 「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。

      ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。

      注記:

      ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。

      • TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマッピングするには、このオプションを選択したままにして、データ形式としてCSVを選択します。

      • ソースCSVファイルをターゲットデータベースおよびテーブルに関連付けるためのマッピングルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。

        • ソース: ファイル名のパターンを[file_name].csvの形式で入力してください。例: TableName.01.csv 。ワイルドカードを使用して複数のファイルを照合することもできます。 *?ワイルドカードのみがサポートされています。

          • my-data?.csv : my-data my-data1.csvmy-data2.csvのような 1 文字が続くすべての CSV ファイルに一致します。
          • my-data*.csv : my-dataで始まるすべての CSV ファイルに一致します。たとえばmy-data-2023.csvmy-data-final.csvなどです。
        • 対象データベース対象テーブル:データをインポートする対象データベースとテーブルを選択します。

    6. 「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。

    7. スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。

    8. インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。

    1. 対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。

      1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

        ヒント:

        複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

      2. 対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。

    2. 「クラウドストレージからデータをインポート」をクリックします。

    3. 「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。

      • ストレージプロバイダー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/
      • 資格情報: Shared Access Signature (SAS) トークンを使用してバケットにアクセスできます。詳細については、 Azure Blob Storageへのアクセスを構成する参照してください。
    4. 「次へ」をクリックしてください。

    5. 「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。

      ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。

      注記:

      ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。

      • TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマッピングするには、このオプションを選択したままにして、データ形式としてCSVを選択します。

      • ソースCSVファイルをターゲットデータベースおよびテーブルに関連付けるためのマッピングルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。

        • ソース: ファイル名のパターンを[file_name].csvの形式で入力してください。例: TableName.01.csv 。ワイルドカードを使用して複数のファイルを照合することもできます。 *?ワイルドカードのみがサポートされています。

          • my-data?.csv : my-data my-data1.csvmy-data2.csvのような 1 文字が続くすべての CSV ファイルに一致します。
          • my-data*.csv : my-dataで始まるすべての CSV ファイルに一致します。たとえばmy-data-2023.csvmy-data-final.csvなどです。
        • 対象データベース対象テーブル:データをインポートする対象データベースとテーブルを選択します。

    6. 「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。

    7. スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。

    8. インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。

    1. 対象のTiDB Cloud StarterまたはEssentialインスタンスのインポートページを開きます。

      1. TiDB Cloudコンソールにログインし、私のTiDBページに移動します。

        ヒント:

        複数の組織に所属している場合は、左上隅のコンボボックスを使用して、まず目的の組織に切り替えてください。

      2. 対象のTiDB Cloud StarterまたはEssentialインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。

    2. 「クラウドストレージからデータをインポート」をクリックします。

    3. 「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。

      • ストレージプロバイダー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/
      • Credential : AccessKey ペアを使用してバケットにアクセスできます。詳細については、 Alibaba Cloudオブジェクトストレージサービス(OSS)へのアクセスを設定する参照してください。
    4. 「次へ」をクリックしてください。

    5. 「宛先マッピング」セクションで、ソースファイルをターゲットテーブルにどのようにマッピングするかを指定します。

      ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。

      注記:

      ソースファイルURIで単一のファイルが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションは表示されず、 TiDB Cloudはソースフィールドにファイル名を自動的に入力します。この場合、データインポートの対象となるデータベースとテーブルを選択するだけで済みます。

      • TiDB Cloud がファイル命名規則に従うすべてのソース ファイルを対応するテーブルに自動的にマッピングするには、このオプションを選択したままにして、データ形式としてCSVを選択します。

      • ソースCSVファイルをターゲットデータベースおよびテーブルに関連付けるためのマッピングルールを手動で構成するには、このオプションの選択を解除し、次のフィールドに入力します。

        • ソース: ファイル名のパターンを[file_name].csvの形式で入力してください。例: TableName.01.csv 。ワイルドカードを使用して複数のファイルを照合することもできます。 *?ワイルドカードのみがサポートされています。

          • my-data?.csv : my-data my-data1.csvmy-data2.csvのような 1 文字が続くすべての CSV ファイルに一致します。
          • my-data*.csv : my-dataで始まるすべての CSV ファイルに一致します。たとえばmy-data-2023.csvmy-data-final.csvなどです。
        • 対象データベース対象テーブル:データをインポートする対象データベースとテーブルを選択します。

    6. 「次へ」をクリックしてください。TiDB Cloudがソースファイルを適切にスキャンします。

    7. スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックします。

    8. インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。

    インポートタスクを実行する際に、サポートされていない変換や無効な変換が検出された場合、 TiDB Cloud はインポートジョブを自動的に終了し、インポートエラーを報告します。

    インポートエラーが発生した場合は、以下の手順を実行してください。

    1. 部分的にインポートされたテーブルを削除します。
    2. テーブルスキーマファイルを確認してください。エラーがある場合は、テーブルスキーマファイルを修正してください。
    3. CSVファイル内のデータ型を確認してください。
    4. インポートタスクをもう一度実行してみてください。

    トラブルシューティング

    データインポート中の警告を解決する

    [インポートの開始]をクリックした後、 can't find the corresponding source filesなどの警告メッセージが表示された場合は、正しいソース ファイルを提供するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、詳細設定を使用して変更することで問題を解決します。

    これらの問題を解決した後、データを再度インポートする必要があります。

    インポートされたテーブルに行が0件あります

    インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。行数がゼロの場合は、入力したバケットURIに一致するデータファイルがなかったことを意味します。この場合は、正しいソースファイルを指定するか、既存のファイルをデータインポートの命名規則に従って名前変更するか、または詳細設定を使用して変更することで問題を解決してください。その後、再度テーブルをインポートしてください。

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