このトピックでは、AnalyticDB for MySQLでのインポートとエクスポートに関するよくある質問に対する回答を提供します。
質問でエディションが指定されていない場合、質問はAnalyticDB for MySQL Data Warehouse edition (V3.0) クラスターにのみ適用されます。
FAQの概要
MaxCompute外部テーブルを作成したときに "endpoint unreachable" エラーメッセージが返された場合はどうすればよいですか?
MaxCompute外部テーブルを作成したときに「Project not found - 'xxx' 」エラーメッセージが返された場合はどうすればよいですか?
MaxComputeからデータをインポートするたびに、書き込み操作をロールバックしてデータの行を送信するように指示されるエラーメッセージが表示された場合はどうすればよいですか?
MaxComputeからデータをインポートするときに「Query Exceeded Maximum Time Limit」エラーメッセージが返された場合はどうすればよいですか?
MaxComputeデータをインポートするときに、"cant submit job for job queue is full" というエラーメッセージが返された場合はどうすればよいですか?
ARRAYタイプのデータをMaxComputeからAnalyticDB for MySQLにインポートするにはどうすればよいですか?
INSERT OVERWRITEステートメントを実行してAnalyticDB for MySQLからMaxCompute外部テーブルにデータをエクスポートすると、データが上書きされないのはなぜですか。
MaxComputeからインポートされたデータの量が、AnalyticDB for MySQLで照会されたデータの量と一致しません。 これはなぜですか。
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、ソーステーブルのデータ型を変更できますか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、ソーステーブルのデータ型が変更されたためにエラーが発生した場合はどうすればよいですか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときに無効な日付値が書き込まれるためにエラーが発生した場合はどうすればよいですか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、プライマリキーのないテーブルが同期されるためにエラーが発生した場合はどうすればよいですか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、CREATE TABLEでデフォルトのフィールド値が長すぎるためにエラーが発生した場合はどうすればよいですか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、1つのレコードに16 MBを超えるデータが書き込まれたためにエラーが発生した場合はどうすればよいですか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときにディスク容量が使い果たされたためにエラーが発生した場合はどうすればよいですか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、テーブルまたはフィールドが存在しないためにエラーが発生した場合はどうすればよいですか?
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、AnalyticDB for MySQLクラスターでデータ遅延が発生した場合はどうすればよいですか?
DataWorksを使用してAnalyticDB for MySQLにデータをインポートするときに、1秒あたりの書き込みトランザクション (TPS) が期待に合わないのはなぜですか。
DataWorksを使用してAnalyticDB for MySQLにデータをインポートすると、インポートされたテーブルでデータスキューが発生するのはなぜですか。
adb-import.shを使用してオンプレミスデータをインポートするときに、クライアントまたはそのサーバーにワークロードのボトルネックが存在するかどうかを確認する方法を教えてください。
adb-import.shを使用してオンプレミスデータをインポートするときに、単一のスクリプトを使用して複数のテーブルをインポートするにはどうすればよいですか?
adb-import.shを使用してオンプレミスデータをインポートするときに、インポートプログラムをバックグラウンドで実行するにはどうすればよいですか?
adb-import.shを使用してオンプレミスデータをインポートするときに、インポートプログラムに対して返されるエラーを無視するにはどうすればよいですか?
adb-import.shを使用してオンプレミスデータをインポートするときに、インポートエラーの原因を絞り込むにはどうすればよいですか?
adb-import.shを使用してオンプレミスデータをインポートするときに、Windowsオペレーティングシステムでインポートプログラムを実行するにはどうすればよいですか?
非同期インポートまたはエクスポートジョブを停止するにはどうすればよいですか?
AnalyticDB for MySQLコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。 管理するクラスターを見つけて、クラスターIDをクリックします。 左側のナビゲーションウィンドウで、診断の最適化 をクリックします。 インポート/エクスポートタスク タブで、停止する非同期ジョブを見つけ、非同期タスク名 の名前を取得してから、[ジョブのキャンセル] "${非同期ジョブ名}"
ステートメントを実行して、非同期ジョブをキャンセルします。 非同期インポートジョブとエクスポートジョブの詳細については、「インポートジョブの非同期送信」をご参照ください。
ステートメントを使用して、現在のデータベースで実行状態にあるインポートジョブをクエリするにはどうすればよいですか?
実行するステートメントは、次のとおりです。
SELECT * FROM INFORMATION_SCHEMA.kepler_meta_async_jobs where status = "RUNNING"
プログラムとJDBCを使用してAnalyticDB for MySQLにデータをインポートするときに、パフォーマンスが期待どおりでない場合はどうすればよいですか?
データソースが高速にデータを生成できることを確認してください。 データが他のシステムまたはファイルからのものである場合は、クライアントの出力ボトルネックを確認します。
データを高速に処理できることを確認してください。 データを同期的に生成および消費できるかどうかを確認し、十分な量のデータがAnalyticDB for MySQLにインポートされるのを待っていることを確認します。
クライアントが配置されているホストで適切なワークロードを確保しながら、CPU使用率またはディスクI/O使用率を確認して、システムリソースが十分かどうかを確認します。
AnalyticDB for MySQL Data Lakehouse Edition (V3.0) でAPSジョブを実行すると、接続に対して課金されますか?
APSジョブを実行する場合、接続に対して課金されません。 ただし、APSジョブはリソースグループで実行され、消費されたリソースに対して課金されます。
データをインポートまたはエクスポートするOSS外部テーブルを作成するときに、内部エンドポイントまたはパブリックエンドポイントを選択する必要がありますか?
データをインポートまたはエクスポートするOSS外部テーブルを作成する場合、内部エンドポイントを選択する必要があります。これは、AnalyticDB for MySQLがOSS外部テーブルを使用して、インターネットではなく内部ネットワーク経由でOSSにアクセスするためです。
MaxCompute外部テーブルを使用してデータをインポートするときに、「ErrorCode=ServiceUnavailable、ErrorMessage=Serviceは一時的に利用できません。後でもう一度やり直してください」というメッセージが返された場合はどうすればよいですか?
原因: MaxComputeサービスでエラーが発生しました。
解決策: チケットを起票
MaxCompute外部テーブルを使用してデータをインポートするときに、"ErrorCode=Local Error, ErrorMessage=connect timed out" メッセージが返された場合はどうすればよいですか?
原因: MaxComputeサービスでエラーが発生しました。
解決策: チケットを起票
MaxCompute外部テーブルを作成したときに "endpoint unreachable" エラーメッセージが返された場合はどうすればよいですか?
原因: MaxCompute外部テーブルを作成すると、指定されたエンドポイントにアクセスできない場合、 "endpoint unreachable" エラーメッセージが返されます。
解決策: Elastic Network Interface (ENI) を有効にし、CREATE TABLEステートメントのエンドポイントをクラスターが存在するリージョンのVirtual Private Cloud (VPC) エンドポイントに置き換えてから、CREATE TABLEステートメントを再度実行します。 VPCエンドポイントの取得方法については、「エンドポイント」トピックの「異なるリージョンのエンドポイント (VPC) 」セクションをご参照ください。
MaxCompute外部テーブルを作成したときに「Project not found - 'xxx' 」エラーメッセージが返された場合はどうすればよいですか?
原因1: 指定されたプロジェクトがMaxComputeに存在しないか、プロジェクト名のスペルが間違っています。
解決策: テーブル作成ステートメントでプロジェクト名を変更し、外部テーブルを再作成します。
原因2: 指定されたプロジェクトはMaxComputeに存在しますが、AnalyticDB for MySQLクラスターと同じリージョンに存在しません。
解決策: MaxComputeプロジェクトがAnalyticDB for MySQLクラスターと同じリージョンにあることを確認し、外部テーブルを再作成します。
MaxComputeからデータをインポートするたびに、書き込み操作をロールバックしてデータの行を送信するように指示されるエラーメッセージが表示された場合はどうすればよいですか。
原因: AnalyticDB for MySQLの接続層の制限により、DataXを使用してデータをインポートすると、このエラーが発生する可能性があります。
解決策: JDBC文字列にrewriteBatchedStatements=falseを追加し、データを再度インポートします。
MaxComputeからデータをインポートしたときに「Query Exceeded Maximum Time Limit」エラーメッセージが返された場合はどうすればよいですか。
原因: 大量のMaxComputeテーブルデータのインポートにかかる時間が、AnalyticDB for MySQLでのINSERT操作の制限時間を超えています。
解決策: INSERT_SELECT_TIMEOUTパラメーターの値を変更し、データを再度インポートします。 詳細については、「設定およびヒント設定パラメーター」をご参照ください。
MaxComputeデータをインポートするときに、"cant submit job for job queue is full" というエラーメッセージが返された場合はどうすればよいですか?
原因: AnalyticDB for MySQLクラスターによって同時に実行される非同期ジョブの数が制限を超えています。 チケットを起票して、同時非同期ジョブの最大数を確認できます。
解決策:
送信された非同期ジョブが完了するのを待ってから、新しい非同期ジョブを送信します。 非同期ジョブのステータスを照会する方法については、「インポートジョブの非同期送信」をご参照ください。
AnalyticDB for MySQLクラスターで同時に実行できる非同期ジョブの最大数を変更するには、チケットを起票してください。
MaxComputeデータのクエリ時に「クエリ実行エラー」メッセージが返された場合はどうすればよいですか。
原因1: MaxComputeの権限が正しく設定されていません。 提供されたAccessKeyペアは、MaxComputeテーブルからのデータの読み取りには使用できません。
解決策: MaxComputeの読み取りおよび書き込み権限を変更し、データを再度照会します。
原因2: AnalyticDB for MySQLテーブルのスキーマおよび列名がMaxComputeテーブルのスキーマおよび列名と異なる。
解決策: MaxComputeテーブルと同じスキーマと列名を使用する別のAnalyticDB for MySQL外部テーブルを作成し、データを再度照会します。
原因3: 指定されたMaxComputeパーティションが存在しません。
解決策: クエリステートメントで指定されているMaxComputeパーティションを変更し、データを再度クエリします。
原因4: MaxComputeテーブルに多数の小さなファイルが含まれています。
解決策: MaxComputeの小さなファイルをマージし、データを再度照会します。 MaxComputeの小さなファイルをマージする方法については、「小さなファイルのマージ」をご参照ください。 例:
ALTER TABLE tablename [PARTITION] MERGE SMALLFILLES;
ARRAYタイプのデータをMaxComputeからAnalyticDB for MySQLにインポートするにはどうすればよいですか?
原因: MaxCompute外部テーブルは埋め込みデータ型をサポートしていないため、ARRAY型のデータをMaxComputeからAnalyticDB for MySQLに直接インポートすることはできません。
解決策: MaxComputeからOSSにParquet形式でデータをインポートします。 次に、OSSからAnalyticDB for MySQLにParquet形式のデータをインポートします。
MaxComputeからのデータインポートを高速化するにはどうすればよいですか?
ストレージノードが小さなワークロードしかサポートしていない場合は、SQL_OUTPUT_BATCH_SIZEパラメーターの値を変更し、データを再度インポートします。 例:
adb_config SQL_OUTPUT_BATCH_SIZE = 6000を設定します。
MaxComputeに多数のパーティションが存在する場合は、ENABLE_ODPS_MULTI_PARTITION_PART_MATCHパラメーターの値をfalseに変更し、データを再度インポートします。 例:
adb_config ENABLE_ODPS_MULTI_PARTITION_PART_MATCH=false;
この問題が解決しない場合は、テクニカルサポートにお問い合わせください。
INSERT OVERWRITEステートメントを実行してAnalyticDB for MySQLからMaxCompute外部テーブルにデータをエクスポートすると、データが上書きされないのはなぜですか。
この問題は、MaxCompute外部テーブルがデータの上書きをサポートしていないために発生します。
MaxComputeからインポートされたデータの量は、AnalyticDB for MySQLで照会されたデータの量と一致しません。 これはなぜですか。
原因: AnalyticDB for MySQLは、重複するプライマリキー値を含むデータエントリを削除します。
解決策: MaxComputeデータエントリに重複するプライマリキー値が含まれているかどうかを確認します。
data Transmission Service (DTS) を使用してAnalyticDB for MySQLにデータを同期するときに、ソースデータベースにAnalyticDB for MySQLでサポートされていないデータ型が含まれている場合、エラーが発生しますか。
ソースデータベースにAnalyticDB for MySQLでサポートされていない型のデータ (地理的位置データなど) が含まれている場合、AnalyticDB for MySQLはスキーマの初期化中にそのようなデータ型の列を破棄します。
AnalyticDB For MySQLでサポートされているデータ型の詳細については、「基本データ型」および「 複雑なデータ型
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、ソーステーブルのデータ型を変更できますか?
データ同期中にソーステーブルのデータ型を変更できます。 データ型は、整数型または浮動小数点型内でのみ変更でき、値の範囲が狭い型から値の範囲が広い型まで、または単精度データ型から倍精度データ型まで変更できます。
整数データ型には、TINYINT、SMALLINT、INT、およびBIGINTがあります。 値の範囲が狭いデータ型から値の範囲が広いデータ型に変更できます。 たとえば、列のデータ型をTINYINTからBIGINTに変更できますが、その逆はできません。
浮動小数点データ型には、FLOATとDOUBLEがあります。 列のデータ型をFLOATからDOUBLEに変更できますが、その逆はできません。
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、ソーステーブルのデータ型が変更されたためにエラーが発生した場合はどうすればよいですか?
エラー:
'id' はLONGタイプです。列タイプをDECIMALに変更できません
modify precision is not supported, col=id, type decimal, old=11, new=21
原因: エラーの原因については、このトピックの「DTSを使用してAnalyticDB For MySQLにデータを同期するときにソーステーブルのデータ型を変更できますか? 」を参照してください。
解決策:
非フルデータベース同期: ソーステーブルを再同期することを推奨します。 具体的には、同期オブジェクトからソーステーブルを削除し、ターゲットデータベースからターゲットテーブルを削除してから、ソーステーブルを同期オブジェクトに追加します。 DTSは、スキーマを含む完全なデータ同期を再実行します。 このようにして、非フルデータベース同期のDDLステートメントが削除されます。
完全データベース同期: エラーテーブルとは異なる名前と、AnalyticDB for MySQLのソーステーブルと同じスキーマを使用する別のテーブルを作成します。 次に、セレクトに挿入文を使用して、ソーステーブルのデータを新しいテーブルに書き込み、エラーテーブルを削除し、RENAME文を実行して新しいテーブルの名前をエラーテーブルの名前に変更し、データ同期ジョブを再起動します。
無効な日付値が書き込まれたためにエラーが発生した場合の対処方法DTSを使用してAnalyticDB for MySQLにデータを同期する場合?
エラー:
"2013-05-00 00:00:00" を解析できません: dayOfMonthの値0は [1,31] の範囲にある必要があります
原因: AnalyticDB for MySQLでは、無効な日付値を書き込むことはできません。
解決策:
ジョブがフルデータ初期化段階にある場合は、ソーステーブルの値を有効な値に変更します。 たとえば、2013-05-00 00:00:00を2013-05-01 00:00:00に変更します。
ジョブが増分データ同期ステージにある場合は、同期オブジェクトからソーステーブルを削除し、ソーステーブルの値を有効な値に変更し、ソーステーブルを同期オブジェクトに追加してから、ジョブを再起動します。
データベースの完全同期中に増分データ同期を実行する場合は、テクニカルサポートに連絡して無効な値の書き込みを有効にします。 無効な値の書き込みが有効になると、無効な値はすべてnullに書き込まれます。
主キーのないテーブルが同期されているためにエラーが発生した場合の対処方法DTSを使用してAnalyticDB for MySQLにデータを同期する場合?
エラー:
DTS-077004: Record Replicatorエラー。 [[17003,2020051513063717201600100703453067067] table not exist => xxx_table]
による原因原因:AnalyticDB for MySQLでは、プライマリキーなしでテーブルを同期することはできません。
解決策: このエラーは、データベース全体が同期されている場合にのみ発生します。 ソースデータベースにプライマリキーのないテーブルが含まれているかどうかを確認します。 そうである場合、ターゲットデータベースにプライマリキーを持つテーブルを手動で作成し、DTSタスクを再起動します。
CREATE TABLEでデフォルトのフィールド値が長すぎるためにエラーが発生した場合の対処方法DTSを使用してAnalyticDB for MySQLにデータを同期する場合?
エラー:
デフォルト値が長すぎる
解決策: AnalyticDB for MySQLクラスターを最新バージョンにアップグレードするには、テクニカルサポートにお問い合わせください。
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、1つのレコードに16 MBを超えるデータが書き込まれたためにエラーが発生した場合はどうすればよいですか?
エラー:
com.mysql.jdbc.PacketTooBigException: クエリのパケットが大きすぎます (120468711 > 33554432) 。 サーバーでこの値を変更するには、max_allowed_packet変数を設定します。
解決策: AnalyticDB for MySQLクラスターを最新バージョンにアップグレードするには、テクニカルサポートにお問い合わせください。
ディスク容量が使い果たされたためにエラーが発生した場合の対処方法DTSを使用してAnalyticDB for MySQLにデータを同期する場合?
エラー:
ディスクはオーバーフロー
解決策: データの一部を削除して十分なディスク容量を解放するか、テクニカルサポートに連絡してAnalyticDB for MySQLクラスターをスケールアウトしてください。 ディスク容量が十分であることを確認してから、DTSタスクを再起動します。
テーブルまたはフィールドが存在しないためにエラーが発生した場合の対処方法DTSを使用してAnalyticDB for MySQLにデータを同期する場合?
エラー:
table not exist => t1
解決策: DTSタスクを設定するときに、CREATE TABLEなどのすべてのDDLステートメントが選択されているかどうかを確認します。 すべてのDDL文が選択されていない場合は、すべてのDDL文を選択します。
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、ソースインスタンスのデータベース、テーブル、または列の名前にハイフン (-) が含まれている場合、エラーが発生しますか?
AnalyticDB for MySQLでは、データベース、テーブル、および列の名前にハイフン (-) を含めることはできません。 データの同期を成功させるために、システムはハイフン (-) をアンダースコア (_) にマッピングします。
データベース、テーブル、または列名 (スペースや漢字を含むテーブル名など) のエラーが原因でデータ同期が失敗した場合は、テクニカルサポートにお問い合わせください。
AnalyticDB For MySQLの制限の詳細については、「制限」をご参照ください。
DTSを使用してAnalyticDB for MySQLにデータを同期するときに、AnalyticDB for MySQLクラスターでデータ遅延が発生した場合はどうすればよいですか?
デフォルトでは、DTS同期タスクはメディアインスタンスクラスを使用します。 ソースデータベースが書き込みリクエストでオーバーロードされている場合は、インスタンス仕様をアップグレードする必要があります。 詳細については、「DTSインスタンスのアップグレード」をご参照ください。
プライマリキーのないテーブルの場合、DTSは同期中にプライマリキーを自動的に構成します。 これにより、ホットデータ行の更新が遅くなります。 AnalyticDB for MySQLテクニカルサポートにチケットを起票します。
AnalyticDB for MySQLクラスターの書き込みパフォーマンスが上限に達した場合、AnalyticDB for MySQLクラスターの仕様をアップグレードする必要があります。
DataWorksを使用してAnalyticDB for MySQLにデータをインポートするときに、書き込みTPSが期待に合わないのはなぜですか?
クライアントから少量のデータがインポートされると、データはデータベースサーバーによってタイムリーに処理されますが、CPUおよびディスクI/Oリソースは十分に活用されていません。 その結果、書き込み応答時間と書き込みTPSが期待に合わない場合があります。 書き込みごとのデータレコードおよび期待される最大同時実行の値を増やして、インポートされるデータの量を増やすことができます。 データインポートパフォーマンスは、インポートされるデータの量が増加するにつれて直線的に増加します。
DataWorksを使用してAnalyticDB for MySQLにデータをインポートすると、インポートされたテーブルでデータスキューが発生するのはなぜですか。
インポートされたテーブルでデータスキューが発生すると、特定のクラスターノードが過負荷になり、インポートパフォーマンスが低下します。 この場合、CPUおよびディスクI/Oリソースが十分に利用されず、書き込み応答時間が長くなる。 [診断と最適化] ページの [データモデリング診断] タブに、インポートしたテーブルのデータスキュー診断結果が表示されます。 テーブルスキーマを再設計し、データを再度インポートできます。 詳細については、「スキーマデザイン」をご参照ください。
オンプレミスデータのインポートにadb-import.shを使用するときに、クライアントまたはそのサーバーにワークロードのボトルネックが存在するかどうかを確認するにはどうすればよいですか。
クライアントにボトルネックが存在する場合、ストレステスト中のデータベースのワークロードを最大化できません。 次のいずれかの方法を使用して、クライアントまたはそのサーバーにワークロードのボトルネックが存在するかどうかを確認できます。
AnalyticDB for MySQLコンソールにログインします。 クラスターの左側のナビゲーションウィンドウで、[モニタリング情報] または [診断と最適化] をクリックします。
次の表に示すコマンドを実行します。
コマンド | 説明 |
トップ | CPU使用率を表示します。 |
無料 | メモリ使用量を表示します。 |
vmstat 1 1000 | システム全体のワークロードを表示します。 |
dstat -all -- disk-utilまたはiostat 1 1000 | ディスクの使用率または読み取り帯域幅を表示します。 |
jstat -gc <pid> 1000 | インポートツールのJavaガベージコレクション (GC) プロセスの詳細を表示します。 GCが頻繁に実行される場合は、 |
1つのスクリプトを使用して複数のテーブルをインポートするときに、adb-import.shを使用してオンプレミスデータをインポートする方法を教えてください。
インポートしたファイルの行区切り文字と列区切り文字が同じ場合、tableName
パラメーターとdataPath
パラメーターの値を変更して、1つのスクリプトを使用して複数のテーブルをインポートできます。
たとえば、tableNameパラメーターとdataPathパラメーターは、次の値に設定できます。
tableName=$1
dataPath=$2
次のコマンドを実行してファイルをインポートします。
# sh adb-import.sh table_name001 /path/table_001
# sh adb-import.sh table_name002 /path/table_002
# sh adb-import.sh table_name003 /path/table_003
インポートプログラムをバックグラウンドで実行するにはどうすればよいですか [adb-import.shを使用してオンプレミスデータをインポートする]
次のコマンドを実行して、インポートプログラムをバックグラウンドで実行できます。
# nohup sh adb-import.sh &
インポートプログラムの起動後、次のコマンドを実行してログを確認できます。 エラー情報が返された場合は、返された情報に基づいてトラブルシューティングを行います。
# tail -f nohup.out
次のコマンドを実行して、インポートプロセスが正常に実行されているかどうかを確認することもできます。
# ps -ef | grepインポート
オンプレミスデータをインポートするときに、adb-import.shを使用してインポートプログラムに対して返されるエラーを無視するにはどうすればよいですか?
次の理由でエラーが発生する可能性があります。
SQL文の実行に失敗しました。
ignoreErrors
パラメーターをtrueに設定すると、エラーを無視できます。 実行結果には、エラーが発生したファイル、開始行番号、およびfailed文が含まれます。batchSize
パラメーターが指定されている場合、障害のある行番号は開始行番号にbatchSize
値を加えた値以下になります。ファイル内の列数が期待される数と一致しません。
ファイルの列数が予想される数と一致しない場合、インポートツールは現在のファイルのインポートを直ちに停止し、エラー情報を返します。 ただし、このエラーは無効なファイルが原因であるため無視されません。ファイルの有効性を手動で確認する必要があります。 サンプルエラー情報:
[エラー] 2021-03-22 00:46:40,444 [producer- /test2/data/lineitem.csv.split00.100-41] analyticdb.tool.ImportTool (ImportTool.java:591) -悪い行が見つかり、インポートを停止します! 16, file = /test2/data/tpch100g/lineitem.csv.split00.100, rowCount = 7, current row = 3 | 123 | 179698 | 145 | 73200.15 | 0.06 | 0.00 | R | F | 1994-02-02 | 1994-01-04 | 1994-02- 23 | なし | 空気 | 猛烈に勇敢なaccoの横 |
インポートエラーの原因を絞り込むには、adb-import.shを使用してオンプレミスデータをインポートする方法を教えてください。
インポートエラーの原因を絞り込むには、次の方法を使用します。
インポートが失敗した場合、AnalyticDB for MySQLインポートツールはエラーログと詳細なエラー原因を返します。 最大1,000文字のSQL文を返すことができます。 制限を拡張する場合は、次のコマンドを実行し、
failureSqlPrintLengthLimit
パラメーターを1500などの大きな値に設定します。printErrorSql=true failureSqlPrintLengthLimit=1500;
batchSize
パラメーターの値に基づいて、数千のSQL文がバッチ実行される可能性があります。これにより、障害のある行を特定することが困難になります。 トラブルシューティングを容易にするために、batchSize
パラメーターを10などの小さな値に設定できます。 サンプルコマンド:batchSize=10;
ファイルが分割され、障害のある行を含むセグメントが特定されている場合は、
dataPath
パラメーターを指定して、障害のある行を含むセグメントをインポートできます。 サンプルコマンド:dataPath=/u01/this/is/the/directory/where/product_info/stores/file007;
オンプレミスデータをインポートするときに、adb-import.shを使用してWindowsオペレーティングシステムでインポートプログラムを実行するにはどうすればよいですか。
Windowsはバッチスクリプトを提供しません。 次のコマンドを実行して、JARファイルを呼び出すことができます。
使用法: java -jar adb-import-tool.jar [-a <arg>] [-b <arg>] [-B <arg>] [-c <arg>]
[-D <arg>] [-d <arg>] [-E <arg>] [-f <arg>] [-h <arg>] [-I <arg>]
[-k <arg>] [-l <arg>] [-m <arg>] [-n <arg>] [-N <arg>] [-O <arg>]
[-o <arg>] [-p <arg>] [-P <arg>] [-Q <arg>] [-s <arg>] [-S <arg>]
[-t <arg>] [-T <arg>] [-u <arg>] [-w <arg>] [-x <arg>] [-y <arg>] [-z <arg>]
パラメーター | 必須 | 説明 |
| 可 | AnalyticDB for MySQLクラスターのエンドポイント。 |
| AnalyticDB for MySQLクラスターのデータベースアカウント。 | |
| AnalyticDB for MySQLクラスターのデータベースアカウントに対応するパスワード。 | |
| AnalyticDB for MySQLクラスターへの接続に使用されるポート番号。 | |
| AnalyticDB for MySQLクラスターのデータベース名。 | |
| インポートするファイルまたはフォルダーの絶対パス。 次のいずれかの操作を実行できます。
| |
| インポートするテーブルの名前。 | |
| 任意 | インポートが完了したことを示すファイルを生成するかどうかを指定します。 このパラメーターのデフォルト値は空の文字列です。これは、そのようなファイルが生成されないことを示します。 そのようなファイルを生成する場合は、このパラメーターをファイル名に設定します。 たとえば、このパラメーターを |
|
説明 インポート速度とシステムパフォーマンスのバランスをとるために、このパラメーターを1024〜4096の値に設定することを推奨します。 | |
| データベースアカウントのパスワードを暗号化するかどうかを指定します。 デフォルト値:false | |
| ファイルをインポートするたびに、ターゲットテーブルの実際の行数を表示するかどうかを指定します。 デフォルト値:false | |
| テーブルヘッダーをスキップするかどうかを指定します。 デフォルト値:false | |
| 列のバックスラッシュ ( 説明 このパラメーターをtrueに設定すると、文字列の解析時にクライアントのパフォーマンスが低下する可能性があります。 テーブルにバックスラッシュ (\) またはアポストロフィ (') が存在しないことが確実な場合は、このパラメーターをfalseに設定します。 | |
| インポートに失敗したデータのバッチを無視するかどうかを指定します。 デフォルト値:false | |
| スキップされた行の数。 このパラメーターの目的は、 | |
| 列の区切り文字。 デフォルトでは、AnalyticDB for MySQLの列区切り文字として | |
| フォルダにdataFileが設定されているときに同時に読み取られるファイルの数。 このパラメーターのデフォルト値は | |
|
| |
| 実行に失敗したSQL文を表示するかどうかを指定します。 デフォルト値:true | |
| AnalyticDB for MySQLデータベースの接続プールのサイズ。 デフォルト値:2 | |
| インポートしたファイルのエンコード標準。 有効な値: GBKおよびUTF-8。 デフォルト値は UTF-8 です。 | |
| INSERT文を実行しないかどうかを指定します。 このパラメーターをtrueに設定した場合、INSERTステートメントは表示されるだけで、実行されません。 このパラメーターをfalseに設定すると、INSERTステートメントが実行されます。 デフォルト値:false | |
| 行の区切り文字。 デフォルトでは、AnalyticDB for MySQLの行区切り文字として | |
| エラーが発生し、 | |
| INSERT文が実行されたときのバッファプールのサイズ。 データがAnalyticDB for MySQLに送信されると、このパラメーターにより、I/Oとコンピューティングが分離され、すべての手順が高速化されてクライアントのパフォーマンスが向上します。 デフォルト値: 128 | |
|
| |
| INSERT文の実行に失敗したときに表示されるSQL文の最大長。 デフォルト値は 1000 です。 | |
| データベース接続パラメーターの設定。 デフォルト値: 例: |
例:
例1: デフォルトのパラメーター設定を使用して、1つのファイルをインポートします。
java -Xmx8G -Xms8G -jar adb-import-tool.jar -hyourhost.ads.aliyuncs.com -uadbuser -ppassword -P3306 -Dtest -- dataFile /data/lineitem.sample -- tableName LINEITEM
例2: パラメーター値を変更して、最大スループットでフォルダーのすべてのファイルをインポートします。
java -Xmx16G -Xms16G -jar adb-import-tool.jar -hyourhost.ads.aliyuncs.com -uadbuser -ppassword -P3306 -Dtest -- dataFile /data/tpch100g -- tableName LINEITEM-並行性64 -- batchSize 2048