クラウドストレージからCSVファイルをTiDB Cloud Premiumにインポートする
このドキュメントでは、Amazon Simple Storage Service (Amazon S3) または Alibaba Cloud Object Storage Service (OSS) から CSV ファイルをTiDB Cloud Premium インスタンスにインポートする方法について説明します。
制限事項
データの一貫性を確保するため、 TiDB Cloud Premium では、CSV ファイルを空のテーブルにのみインポートできます。既にデータが含まれている既存のテーブルにデータをインポートするには、このドキュメントの手順に従って一時的な空のテーブルにデータをインポートし、 INSERT SELECTステートメントを使用してデータを対象の既存のテーブルにコピーします。
ステップ1. CSVファイルを準備する
CSVファイルが256MiBを超える場合は、それぞれ約256MiBのサイズの小さなファイルに分割することを検討してください。
TiDB Cloud Premiumは非常に大きなCSVファイルのインポートをサポートしていますが、サイズが約256MiBの複数の入力ファイルを扱う場合に最高のパフォーマンスを発揮します。これは、 TiDB Cloud Premiumが複数のファイルを並列処理できるため、インポート速度を大幅に向上させることができるからです。
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 Premium は、
.gzip、.gz、.zst.zstd、{.snappyの形式で圧縮ファイルをインポートできます。圧縮 CSV ファイルをインポートする場合は、ファイル名を${db_name}.${table_name}.${suffix}.csv.${compress}形式で指定します。ここで${suffix}省略可能で、「000001」などの任意の整数を指定できます。例えば、trips.000001.csv.gzファイルをbikeshare.tripsテーブルにインポートする場合は、ファイル名をbikeshare.trips.000001.csv.gzに変更する必要があります。
ステップ2.対象テーブルのスキーマを作成する
CSVファイルにはスキーマ情報が含まれていないため、CSVファイルからTiDB Cloud Premiumにデータをインポートする前に、以下のいずれかの方法を使用してテーブルスキーマを作成する必要があります。
方法1: TiDB Cloud Premiumで、ソースデータ用のターゲットデータベースとテーブルを作成します。
方法2:CSVファイルが保存されているAmazon S3またはAlibaba Cloud Object Storage Service(OSS)ディレクトリに、ソースデータ用のターゲットテーブルスキーマファイルを次のように作成します。
ソースデータ用のデータベーススキーマファイルを作成します。
ステップ1の命名規則に従ってCSVファイルが作成されている場合、データベーススキーマファイルはデータインポートにおいてオプションです。そうでない場合は、データベーススキーマファイルは必須です。
各データベーススキーマファイルは
${db_name}-schema-create.sql形式である必要があり、CREATE DATABASEDDLステートメントが含まれている必要があります。このファイルを使用すると、 TiDB Cloud Premiumは、データのインポート時にデータを格納するための${db_name}データベースを作成します。例えば、次のステートメントを含む
mydb-schema-create.sqlファイルを作成すると、 TiDB Cloud Premium はデータをインポートする際にmydbデータベースを作成します。CREATE DATABASE mydb;ソースデータ用のテーブルスキーマファイルを作成します。
CSVファイルが保存されているAmazon S3またはAlibaba Cloud Object Storage Serviceディレクトリにテーブルスキーマファイルを含めない場合、 TiDB Cloud Premiumはデータのインポート時に対応するテーブルを作成しません。
各テーブルスキーマファイルは
${db_name}.${table_name}-schema.sql形式で、CREATE TABLEDDLステートメントを含んでいる必要があります。このファイルを使用すると、 TiDB Cloud Premiumは、データのインポート時に${table_name}データベースに${db_name}テーブルを作成します。例えば、次のステートメントを含む
mydb.mytable-schema.sqlファイルを作成すると、 TiDB Cloud Premium はデータをインポートする際にmytableデータベースにmydbテーブルを作成します。CREATE TABLE mytable ( ID INT, REGION VARCHAR(20), COUNT INT );
ステップ3.アカウント間アクセスの設定
TiDB Cloud PremiumがAmazon S3またはAlibaba Cloud Object Storage Service(OSS)内のCSVファイルにアクセスできるようにするには、次のいずれかの操作を行います。
CSV ファイルが Amazon S3 にある場合は、 TiDB Cloud Premium インスタンスに対してAmazon S3へのアクセスを設定する。
バケットにアクセスするには、AWS アクセスキーまたはロール ARN のいずれかを使用できます。完了したら、ステップ4で必要となるため、アクセスキー (アクセスキー ID とシークレット アクセスキーを含む) またはロール ARN の値をメモしておいてください。
CSV ファイルが Alibaba Cloud Object Storage Service (OSS) にある場合は、 TiDB Cloud Premium インスタンスのAlibaba Cloud Object Storage Service (OSS) へのアクセスを設定する。
ステップ4.CSVファイルをインポートする
CSVファイルをTiDB Cloud Premiumにインポートするには、以下の手順に従ってください。
対象のTiDB Cloud Premiumインスタンスのインポートページを開きます。
TiDB Cloudコンソールにログインし、My TiDBページに移動します。
対象のTiDB Cloud Premiumインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。
「クラウドストレージからデータをインポート」をクリックします。
「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。
- ストレージプロバイダー: 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 CloudFormation を使用して新しいロールを作成] をクリックし、ガイド付き手順に従って、提供されているテンプレートを起動し、 IAM警告を確認し、スタックを作成し、生成された ARN をTiDB Cloud Premium にコピーしてください。
- AWSアクセスキー:AWSアクセスキーIDとAWSシークレットアクセスキーを入力してください。
- バケットへのアクセスをテストする:認証情報が正しく入力された後、このボタンをクリックして、 TiDB Cloud Premiumがバケットにアクセスできることを確認してください。
- ターゲット接続:インポートを実行するTiDBのユーザー名とパスワードを入力してください。必要に応じて、 「接続テスト」をクリックして認証情報を検証してください。
「次へ」をクリックしてください。
ソースファイルマッピングのセクションでは、 TiDB Cloud Premiumがバケットをスキャンし、ソースファイルと宛先テーブル間のマッピングを提案します。
ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。
ファイル命名規則ソース ファイルとターゲット テーブルに適用するには、自動マッピングを有効のままにしておきます。データ形式としてCSVを選択したままにしておきます。
詳細オプション:パネルを展開して
Ignore compatibility checks (advanced)の切り替えボタンを表示します。スキーマ互換性検証を意図的にバイパスしたい場合を除き、無効のままにしておいてください。
TiDB Cloud Premiumはソースパスを自動的にスキャンします。スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックしてください。
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。
対象のTiDB Cloud Premiumインスタンスのインポートページを開きます。
TiDB Cloudコンソールにログインし、My TiDBページに移動します。
対象のTiDB Cloud Premiumインスタンスの名前をクリックして概要ページに移動し、左側のナビゲーションペインで「データ」 > 「インポート」をクリックします。
「クラウドストレージからデータをインポート」をクリックします。
「クラウドストレージからデータをインポート」ページで、以下の情報を入力してください。
- ストレージプロバイダー: 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 を
- Credential : AccessKey ペアを使用してバケットにアクセスできます。詳細については、 Alibaba Cloudオブジェクトストレージサービス(OSS)へのアクセスを設定するを参照してください。
- バケットへのアクセスをテストする:認証情報が正しく入力された後、このボタンをクリックして、 TiDB Cloud Premiumがバケットにアクセスできることを確認してください。
- ターゲット接続:インポートを実行するTiDBのユーザー名とパスワードを入力してください。必要に応じて、 「接続テスト」をクリックして認証情報を検証してください。
「次へ」をクリックしてください。
ソースファイルマッピングのセクションでは、 TiDB Cloud Premiumがバケットをスキャンし、ソースファイルと宛先テーブル間のマッピングを提案します。
ソースファイルURIでディレクトリが指定されている場合、 「自動マッピングにファイル命名規則を使用する」オプションがデフォルトで選択されます。
ファイル命名規則ソース ファイルとターゲット テーブルに適用するには、自動マッピングを有効のままにしておきます。データ形式としてCSVを選択したままにしておきます。
詳細オプション:パネルを展開して
Ignore compatibility checks (advanced)の切り替えボタンを表示します。スキーマ互換性検証を意図的にバイパスしたい場合を除き、無効のままにしておいてください。
TiDB Cloud Premiumはソースパスを自動的にスキャンします。スキャン結果を確認し、検出されたデータファイルと対応するターゲットテーブルをチェックしてから、 「インポート開始」をクリックしてください。
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。
インポートタスクを実行する際に、サポートされていない変換や無効な変換が検出された場合、 TiDB Cloud Premium はインポートジョブを自動的に終了し、インポートエラーを報告します。
インポートエラーが発生した場合は、以下の手順を実行してください。
- 部分的にインポートされたテーブルを削除します。
- テーブルスキーマファイルを確認してください。エラーがある場合は、テーブルスキーマファイルを修正してください。
- CSVファイル内のデータ型を確認してください。
- インポートタスクをもう一度実行してみてください。
トラブルシューティング
データインポート中の警告を解決する
[インポートの開始]をクリックした後、 can't find the corresponding source filesなどの警告メッセージが表示された場合は、正しいソース ファイルを提供するか、 データインポートの命名規則に従って既存のファイルの名前を変更するか、詳細設定を使用して変更することで問題を解決します。
これらの問題を解決した後、データを再度インポートする必要があります。
インポートされたテーブルに行が0件あります
インポートの進行状況が「完了」と表示されたら、インポートされたテーブルを確認してください。行数がゼロの場合は、入力したバケットURIに一致するデータファイルがなかったことを意味します。この場合は、正しいソースファイルを指定するか、既存のファイルをデータインポートの命名規則に従って名前変更するか、または詳細設定を使用して変更することで問題を解決してください。その後、再度テーブルをインポートしてください。