大量のデータを SQL スクリプト、CSV ファイル、または Excel ファイルとしてデータベースにインポートする場合、データ管理 (DMS) が提供するデータインポート機能を使用できます。
前提条件
データベースは、次のいずれかの種類です。
MySQL: ApsaraDB RDS for MySQL、PolarDB for MySQL、ApsaraDB MyBase for MySQL、PolarDB for Xscale (PolarDB-X)、AnalyticDB for MySQL、およびその他のソースからの MySQL データベース
SQL Server: ApsaraDB RDS for SQL Server、ApsaraDB MyBase for SQL Server、およびその他のソースからの SQL Server データベース
PostgreSQL: ApsaraDB RDS for PostgreSQL、PolarDB for PostgreSQL、ApsaraDB MyBase for PostgreSQL、AnalyticDB for PostgreSQL、およびその他のソースからの PostgreSQL データベース
MariaDB: ApsaraDB RDS for MariaDB およびその他のソースからの MariaDB データベース
OceanBase
PolarDB for PostgreSQL (Oracle 互換)
Dameng (DM)
Db2
Oracle
Redis
MongoDB
ターゲットデータベースに対する変更権限を持っていること。
使用上の注意
1 つのチケットでインポートできる SQL スクリプト、CSV ファイル、または Excel ファイルのサイズは、最大 5 GB です。
DMS では、添付ファイルとして ZIP ファイルをアップロードできます。1 つのチケットを送信して複数のファイルをインポートする場合は、ファイルを ZIP ファイルにパッケージ化してアップロードできます。
データインポート機能では、一度に複数のデータベースのデータを変更することはできません。一度に複数のデータベースのデータを変更するには、標準データ変更チケットを送信します。詳細については、「標準データ変更」をご参照ください。
少量のデータのみを変更する場合は、標準データ変更またはロックレス変更チケットを送信して、安定したデータ変更を確保することをお勧めします。
大量のデータをインポートするために使用する SQL スクリプトに、スキーマを変更するために使用される SQL 文が含まれている場合、ロックフリー スキーマ変更機能が有効になっている場合でも、スキーマ変更のためにテーブルがロックされる可能性があります。
大量のデータをデータベースにインポートする際にデータベースのパフォーマンスが低下しないように、
INSERT
、UPDATE
、DELETE
などのパフォーマンス効率の高い SQL 文を使用することをお勧めします。UPDATE 文と DELETE 文では、主キーインデックスを使用する必要があります。インポートするCSV ファイルまたは Excel ファイルには、フィールド名とフィールド値のみが含まれています。そうでない場合、インポートタスクは失敗します。
手順
このトピックでは、セキュリティコラボレーションモードで管理されている ApsaraDB RDS for MySQL インスタンスを使用して、構成手順を説明します。
- DMS コンソール V5.0 にログインします。
DMS コンソールの左上隅にある
アイコンにポインターを移動し、 を選択します。
説明標準モードで DMS コンソールを使用する場合は、上部のナビゲーションバーで
を選択します。[データ変更チケット] ページで、チケットパラメータを構成します。次の表に、主要なパラメータを示します。
パラメータ
説明
データベース
データをインポートするデータベース。[データベース] ドロップダウンリストからは、一度に 1 つのデータベースのみを選択できます。
説明データベースが [柔軟な管理] モードまたは [安定的な変更] モードで管理されている場合は、データベースにログインしていることを確認してください。そうでない場合、データベースは [データベース] ドロップダウンリストに表示されません。
実行方法
チケットを実行する方法。デフォルトでは、[チケット送信者が承認時に実行] が選択されています。このパラメータは、次のいずれかの値にも設定できます。
[承認時に自動的に実行]
[最後の承認者が実行]
ファイルエンコーディング
データベースのエンコード方式。デフォルトでは、[自動識別] が選択されています。このパラメータは、次のいずれかの値にも設定できます。
[UTF-8]
[GBK]
[ISO-8859-1]
インポートモード
データをインポートするモード。有効な値:
[速度モード]: 実行ステップで、アップロードされたファイル内の SQL 文が読み取られ、直接実行されて、ターゲットデータベースにデータがインポートされます。速度モードはセキュリティモードよりも安全性が低いですが、高速です。
説明デフォルトでは、セキュリティルールに基づいて、データベースインスタンスでは [速度モード] は無効になっています。速度モードを有効にするには、次の操作を実行します。データベースインスタンスに適用されているセキュリティルールセットの [詳細] ページに移動し、
タブをクリックします。[基本構成項目] チェックポイントの下のリストで、「データインポートで速度モードの選択をサポートするかどうか」ルールを見つけ、[アクション] 列の [編集] をクリックします。表示されるダイアログボックスで、[構成値] をオンにします。[セキュリティモード]: 事前チェックステップで、アップロードされたファイルが解析され、アップロードされたファイル内の SQL 文または CSV ファイルデータがキャッシュされます。実行ステップで、キャッシュされた SQL 文が読み取られて実行され、データがインポートされるか、キャッシュされた CSV ファイルデータが読み取られてターゲットデータベースにインポートされます。セキュリティモードは速度モードよりも安全ですが、低速です。
ファイルタイプ
データインポート用のファイルの形式。有効な値:
[SQL スクリプト]: デフォルトでは、セキュリティコラボレーションモードで管理されているデータベースインスタンスにデータをインポートするために、INSERT 文と REPLACE 文のみを使用できます。他の SQL 文を使用してデータをインポートする場合は、データベース管理者 (DBA) または DMS 管理者としてデータインポートのセキュリティルールを変更します。セキュリティルールを変更するには、次の操作を実行します。データベースインスタンスに適用されているセキュリティルールセットの [詳細] ページに移動し、[SQL 修正] タブをクリックします。[バッチデータインポートルール] チェックポイントの下のリストで、ビジネス要件に基づいてセキュリティルールを変更します。
[CSV]: ファイル内のデリミタはカンマ (,) である必要があります。
[excel]: ファイルには、テーブルヘッダーとデータ、またはデータのみを含めることができます。テーブルヘッダーには、データの属性が含まれています。
- 説明
このパラメータを CSV または Excel に設定する場合は、データをインポートする前に、データインポート用のテーブルを作成していることを確認してください。
ターゲットテーブル名
データをインポートするターゲットテーブル。
説明このパラメータは、[ファイルタイプ] パラメータを CSV または Excel に設定した後に表示されます。
データの場所
データをインポートするファイルの種類。有効な値:
[最初の動作属性]: テーブルの最初の行には、フィールド名が含まれています。
[最初の動作データ]: テーブルの最初の行には、データが含まれています。
説明このパラメータは、[ファイルタイプ] パラメータを [CSV] または [excel] に設定した場合にのみ表示されます。
書き込みモード
インポートされたデータをターゲットテーブルに書き込むために使用するモード。有効な値:
[INSERT]: データベースは、データの挿入中に主キーをチェックします。重複する主キー値が検出されると、エラーが報告されます。
[INSERT_IGNORE]: インポートされたデータに、ターゲットテーブルのデータレコードと同じデータレコードが含まれている場合、新しいデータレコードは無視されます。
[REPLACE_INTO]: インポートされたデータに、ターゲットテーブルの既存の行と同じ主キーまたは一意なインデックスの値を持つ行が含まれている場合、システムは既存の行を削除し、新しい行をターゲットテーブルに挿入します。
説明INSERT INTO
、INSERT IGNORE
、またはREPLACE INTO
文を使用して、ApsaraDB RDS for MySQL、PolarDB for MySQL、PolarDB-X、AnalyticDB for MySQL、および ApsaraDB for OceanBase データベースにデータを書き込むことができます。他のデータベースにデータを書き込むには、INSERT INTO
文のみを使用できます。添付ファイル
インポートするファイル。有効な値: ファイル と OSS オブジェクトのアップロード。
Object Storage Service (OSS) に保存されているオブジェクトをアップロードする場合は、最初に OSS データソースを DMS に登録します。OSS データソースが登録されたら、[OSS オブジェクトのアップロード] をクリックします。[OSS オブジェクトのアップロード] ダイアログボックスで、ファイルパスを入力します。例:
examplefolder/example.sql
。説明サポートされているファイル形式は、SQL、CSV、TXT、XLSX、および ZIP です。
インポートされるファイルのサイズは、最大 5 GB です。
OSS データソースを DMS に登録する方法の詳細については、「Alibaba Cloud データベースインスタンスの登録」をご参照ください。
その他のオプション
オプション。エラーをスキップするかどうかを指定します。
デフォルトでは、チェックボックスはオフになっています。エラーが発生した場合、DMS は SQL 文の実行を停止し、エラーメッセージを返します。
チェックボックスをオンにすると、DMS はエラーをスキップして SQL 文の実行を続けます。
ロールバック用の SQL 文
[テキスト]: データインポート操作をロールバックするための SQL 文。[SQL テキスト] フィールドに SQL 文を入力します。
[添付ファイル]: ロールバック用の SQL ファイル。SQL ファイルをアップロードします。
説明サポートされているファイル形式は、SQL、TXT、および ZIP です。
ロールバック用のファイルのサイズは、最大 15 MB です。
変更の利害関係者
オプション。データインポートに関与する利害関係者。指定されたすべての利害関係者は、チケットの詳細を表示し、承認プロセスに参加できます。DMS 管理者と DBA 以外の他のユーザーは、チケットの詳細を表示することはできません。
[送信] をクリックし、事前チェックが完了するまで待ちます。チケットが事前チェックに失敗した場合は、問題のトラブルシューティングを行い、[再試行] をクリックします。
説明アップロードされたファイルが SQL スクリプトの場合、DMS はアップロードされたファイル内の SQL 文を事前チェックします。アップロードされたファイルが CSV ファイルの場合、DMS はアップロードされたファイルに基づいて
INSERT
文を生成します。事前チェックステップのタイプチェック中にエラーが報告された場合は、エラーメッセージに基づいて、データベースインスタンスに適用されているセキュリティルールセットのセキュリティルールを変更します。詳細については、「データ変更」をご参照ください。
[承認] ステップで、[承認のために送信] をクリックします。[プロンプト] メッセージで、[OK] をクリックします。
チケットが承認されたら、[変更の実行][実行] ステップで をクリックします。
[タスク設定] ダイアログボックスで、タスクを実行する時間を指定します。
次のいずれかの方法を使用してタスクを実行できます。
[すぐに実行]: デフォルトでは、このオプションが選択されています。このオプションを選択すると、[実行の確認] をクリックすると、タスクがすぐに実行されます。
[スケジュール]: このオプションを選択した場合は、タスクの開始時刻を指定する必要があります。[実行の確認] をクリックすると、タスクは指定された時刻に実行されます。
説明タスクが実行されると、DMS はストリーミングモードで SQL 文を読み取り、バッチで SQL 文を実行します。SQL 文の各バッチのサイズは 1 MB です。
[実行] ステップで、タスクのステータス、SQL チェックの詳細、およびスケジューリングログを表示できます。
一時停止されたタスクを再起動する場合、タスクはインポートモードに基づいて、最初からまたは一時停止のオフセットから実行されます。
速度モード: タスクが一時停止されて再起動された場合、SQL スクリプトが最初から実行されるか、データファイルが最初からインポートされます。
セキュリティモード: タスクが一時停止されて再起動された場合、SQL スクリプトが一時停止のオフセットから実行されるか、データファイルが一時停止のオフセットからインポートされます。
データがインポートされたことを示すメッセージが表示されるまで待ちます。
オプション。インポートされたデータをクエリします。
[SQL コンソール] タブに移動して、インポートされたデータをクエリします。詳細については、「SQL コンソールタブでのデータベースの管理」をご参照ください。
サンプルファイル
FAQ
Q: データインポート中に「スキーマ XXXXX の権限が拒否されました」というエラーが発生した場合はどうすればよいですか?
A: このエラーは、DMS でデータベースにログインするために使用されているアカウントに必要な権限がないことを示しています。特権アカウントを使用して DMS でデータベースにログインし、データインポートを再試行できます。または、アクセス可能な別のパブリックデータベースにデータをインポートすることもできます。データベースアカウントの変更方法の詳細については、「データベースインスタンスの変更」をご参照ください。
エラーが解決しない場合は、データ伝送サービス (DTS) を使用してデータを移行できます。詳細については、「データ移行シナリオの概要」をご参照ください。
Q: データインポートチケットが事前チェックに失敗し、特定の文の送信が許可されていないことがシステムによって報告された場合はどうすればよいですか?
A: DBA または DMS 管理者としてセキュリティルールを変更して、データインポート中に特定の種類の SQL 文を実行できるようにする必要があります。次の例は、データインポート中に CREATE TABLE 文を実行できるようにする方法を示しています。
DMS コンソールにログインし、[セキュリティルール] ページに移動します。
[セキュリティルール] ページで、管理するセキュリティルールセットを見つけ、[アクション] 列の [編集] をクリックします。[詳細] ページで、[SQL 修正] タブをクリックします。
[SQL 修正] タブで、[チェックポイント] パラメータを [バッチデータインポートルール] に設定します。[データインポート中に SQL 文を実行できるようにする] ルールを見つけ、[アクション] 列の [編集] をクリックします。
表示されるダイアログボックスで、[ルール DSL] フィールドに CREATE_TABLE 文を追加し、[送信] をクリックします。詳細については、「SQL 修正」をご参照ください。
データインポートチケットの詳細ページに戻ります。[事前チェック] ステップで、[再試行] をクリックします。
Q: 5 GB を超えるサイズのファイルをアップロードするにはどうすればよいですか?
A: ビジネス要件に基づいて、次のいずれかの方法を使用できます。
ファイルを複数の小さなファイルに分割し、複数のチケットを送信して小さなファイルをアップロードします。
Navicat を使用してデータベースにリモート接続し、ファイルをアップロードします。
Q: データインポート中にエラーが発生した場合、インポートされたデータを削除するにはどうすればよいですか? A: 削除するデータ量に基づいて、次のいずれかの方法を使用できます。
少量のテーブルデータの場合は、SQL コンソールで DELETE 文を実行できます。詳細については、「SQL コンソールタブでのデータベースの管理」をご参照ください。
大量のテーブルデータの場合は、標準データ変更またはロックフリーデータ変更チケットを送信して、テーブルデータを削除できます。ロックフリーデータ変更機能を使用すると、テーブルをロックすることなく、大量のテーブルデータを変更できます。詳細については、「標準データ変更」および「ロックフリー DML 操作の実行」をご参照ください。