大量のデータをSQLスクリプト、CSVファイル、またはExcelファイルとしてデータベースにインポートする場合は、data Management (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と互換)
ダメン (DM)
Db2
オラクル
Redis
MongoDB
DMSでデータをインポートするデータベースにログインしていること。 詳細については、「データベースインスタンスへのログイン」をご参照ください。
移行先データベースに対する変更権限があること。
使用上の注意
1つのチケットにインポートするSQLスクリプト、CSVファイル、またはExcelファイルのサイズは最大5 GBです。
DMSを使用すると、ZIPファイルを添付ファイルとしてアップロードできます。 1つのチケットを送信して複数のファイルをインポートする場合は、ファイルをZIPファイルにパッケージ化してアップロードできます。
データインポート機能では、一度に複数のデータベースのデータを変更することはできません。 一度に複数のデータベースのデータを変更するには、通常のデータ変更チケットを起票してください。 詳細については、「通常のデータ変更」をご参照ください。
少量のデータのみを変更する場合は、安定したデータ変更を保証するために、[通常のデータの変更] または [ロックレスの変更] チケットを送信することを推奨します。
大量のデータのインポートに使用するSQLスクリプトに、スキーマの変更に使用するSQL文が含まれている場合、ロックフリーのスキーマ変更機能が有効になっていても、スキーマの変更によりテーブルがロックされることがあります。
大量のデータがデータベースにインポートされたときにデータベースのパフォーマンスが低下するのを防ぐために、
INSERT
、UPDATE
、DELETE
ステートメントなど、パフォーマンス効率の高いSQLステートメントを使用することをお勧めします。 UPDATEおよびDELETEステートメントは、主キーインデックスを使用する必要があります。
手順
このトピックでは、Security Collaborationモードで管理される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に設定した後に表示されます。
データの場所
データをインポートするファイルのタイプ。 有効な値:
1st behavior attributes: テーブルの最初の行にフィールド名が含まれています。
1番目の行動データ: テーブルの最初の行にデータが含まれています。
書き込みモード
インポートされたデータを宛先テーブルに書き込むために使用するモード。 有効な値:
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ステートメント
Text: データインポート操作をロールバックするための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スクリプトが実行されるか、データファイルが中断のオフセットからインポートされます。
データがインポートされたことを示すメッセージが表示されるまで待ちます。
オプションです。 インポートしたデータを照会します。
SQLConsoleタブに移動して、インポートされたデータを照会します。 詳細については、「SQLConsoleタブのデータベースの管理」をご参照ください。
サンプルファイル
よくある質問
Q: データのインポート中に「スキーマXXXXXのアクセス許可が拒否されました」というエラーが発生した場合はどうすればよいですか。
A: このエラーは、DMSのデータベースへのログインに使用されるアカウントに必要な権限がないことを示しています。 特権アカウントを使用してDMSのデータベースにログインし、データインポートを再試行できます。 または、別のアクセス可能なパブリックデータベースにデータをインポートできます。 データベースアカウントを変更する方法の詳細については、「データベースインスタンスの変更」をご参照ください。
エラーが解決しない場合は、Data Transmission Service (DTS) を使用してデータを移行できます。 詳細については、「データ移行」をご参照ください。
Q: データインポートチケットが事前チェックに失敗し、特定のステートメントの送信が許可されていないとシステムが報告した場合はどうすればよいですか?
A: DBAまたはDMS管理者としてセキュリティルールを変更して、データのインポート中に特定の型のSQL文を実行できるようにする必要があります。 次の例は、データのインポート中にCREATE TABLEステートメントを実行できるようにする方法を示しています。
DMSコンソールにログインし、[セキュリティルール] ページに移動します。
[セキュリティルール] ページで、管理するセキュリティルールセットを見つけ、[操作] 列の [編集] をクリックします。 [詳細] ページで、[SQL修正] タブをクリックします。
[SQL Correct] タブで、[Checkpoints] パラメーターを [Batch Data import rules] に設定します。 データインポート中にSQL文の実行を許可するルールを見つけ、[操作] 列の [編集] をクリックします。
表示されるダイアログボックスで、ルールDSLフィールドにCREATE_TABLEステートメントを追加し、[送信] をクリックします。 詳細については、「SQL Correct」をご参照ください。
データインポートチケットの詳細ページに戻ります。 [事前チェック] ステップで、[再試行] をクリックします。
Q: サイズが5 GBを超えるファイルをアップロードするにはどうすればよいですか?
A: ビジネス要件に基づいて、次のいずれかの方法を使用できます。
ファイルを複数の小さなファイルに分割し、複数のチケットを送信して小さなファイルをアップロードします。
Navicatを使用してデータベースにリモート接続し、ファイルをアップロードします。