Amazon Redshift V2コネクタのトラブルシューティング
更新/挿入操作にJVMオプションを使用する
更新/挿入操作の場合、JVMオプション-DuseDeleteForUpsert=trueを設定して、ターゲットテーブルのすべてのフィールドを接続できます。JVMオプションを設定するときは、次のルールを使用します。
- •JVMオプションを設定すると、Secure Agentは、ソーステーブルとターゲットテーブルの間のプライマリキーの一致に基づいて、ターゲットテーブルのレコードを削除します。ソーステーブルのすべてのレコードがターゲットテーブルに挿入されます。JVMオプションを設定しない場合、Secure Agentは既存の行を更新したり、挿入のマークが付けられているように他の行を挿入したりします。
- •詳細モードのマッピングの場合、マッピングタスクを作成するときにSparkセッションプロパティでJVMオプションを設定します。
- •すべてのカラムが複合キーを形成しているターゲットテーブルを使用し、ターゲットで更新カラムを設定しない場合、マッピングが失敗して警告が表示されることがあります。JVMオプションを設定すると、マッピングタスクは正常に実行されます。
- •更新カラムに重複する値があるターゲットテーブルを使用する場合、マッピングを実行した後、ターゲットテーブルの行数は少なくなります。JVMオプションを設定しない場合、ターゲットテーブルの行数は少なくなりません。
- •カラムに重複する値があるソーステーブルを使用し、そのカラムをターゲットの更新カラムとして選択すると、追加の行がターゲットに追加されます。JVMオプションを設定しない場合、追加の行はターゲットに追加されません。
- •更新/挿入操作の場合、特殊文字を含むカラム名を持つテーブルを使用し、JVMオプションを設定しないと、マッピングは失敗します。
Amazon S3バケットが存在しないか、ユーザーにバケットにアクセスする権限がありません。
Secure Agentをホストするマシンの時刻を変更しないでください。Secure Agentの時刻は、タイムゾーンに従って正確である必要があります。正確でない場合、マッピングは例外で失敗します。
デフォルト値を持つNOT NULLカラム
Amazon Redshiftターゲットテーブルにデフォルト値を持つNOT NULLカラムをマッピングしていない場合でも、挿入、更新、または更新/挿入操作は成功し、NOT NULLカラムのデフォルト値が使用されます。
Secure AgentプロパティでJVMオプション-DRetainUnmappedNotNullColumnValidation値をtrueに設定すると、操作は成功せず、NOT NULLカラムのデフォルト値は使用されません。
Amazon Redshift V2コネクタを使用して更新/挿入操作を実装するにはどうすればよいですか?
Amazon Redshift V2コネクタのAWS IAM認証はどのように設定しますか?
Amazon Redshift V2コネクタを使用して、Amazon Web Services(AWS)によって提供されるAmazon Redshift Serverlessに接続するにはどうすればよいですか?
stringデータ型がマッピングでtimeデータ型にマッピングされると、無効なタイムスタンプエラーが発生する
SQL ELTの最適化が有効になっているマッピングを実行して、日付、タイムスタンプ、および時刻の情報を含む文字列カラムからデータの書き込みを行い、そのデータをデフォルトの日付/時刻形式で処理してRedshiftに書き込む場合は、Secure Agentに対してJVMプロパティ-DHonorInfaDateFormat=trueを使用することができます。
JVMオプションを設定するには、Administratorで次の手順を実行します。
- 1[Administrator] > [ランタイム環境]の順に選択します。
- 2[ランタイム環境]ページで、マッピングを実行するSecure Agentマシンを選択します。
- 3[編集]をクリックします。
- 4[システム構成の詳細]セクションで、[サービス]に[データ統合サーバー]を選択し、[タイプ]に[DTM]を選択します。
- 5JVMオプションシステムプロパティを編集し、値を-DHonorInfaDateFormat=trueに設定します。
- 6[OK]をクリックして変更を保存します。
また、マッピングタスクの詳細セッションプロパティで、入力文字列の形式に従って日付書式文字列セッションプロパティを設定する必要があります。