データ型マッピングのカスタマイズ
データベース取り込みとレプリケーションタスクのターゲットを設定する場合、必要に応じてデータ型マッピングルールを定義して、ソースデータ型からターゲットデータ型へのデフォルトのマッピングをオーバーライドできます。
デフォルトのマッピングについては、「
デフォルトのデータ型マッピング」を参照してください。
この機能は、次のソースとターゲットの組み合わせを持つタスクでサポートされています。
- •Oracleソースと、Databricks、Google BigQuery、Microsoft Azure Synapse Analytics、Oracle、SQL Server、およびSnowflakeターゲットの組み合わせ
- •SQL ServerソースとSnowflakeターゲットの組み合わせ
例えば、Snowflake VARCHAR(255)データ型へのデフォルトのマッピングを使用する代わりに、精度のないOracle NUMBERカラムを、同じく精度のないSnowflakeターゲットのNUMBER()カラムにマッピングするデータ型ルールを作成できます。
データ型マッピングルールを作成するには、次の手順を実行します。
- 1[データ型ルール]を展開します。
- 2[ルールの作成]フィールドに、ソースデータ型とそれをマッピングするターゲットデータ型を入力します。
[ソース]フィールドでのみ、例えば、NUMBER(%,4)、NUMBER(8,%)、またはNUMBER(%)のように、パーセント(%)ワイルドカードを含めて、データ型の精度、スケール、またはサイズを表すことができます。同じデータ型だが精度、スケール、またはサイズ値が異なるソースカラムのそれぞれを個別に指定するのではなく、ワイルドカードを使用して、そのようなすべてのソース列をカバーします。例えば、FLOAT(16)、FLOAT(32)、FLOAT(84)をカバーするには、FLOAT(%)と入力します。ターゲットデータ型に%ワイルドカードを入力することはできません。%ワイルドカードを使用するソースデータ型は、特定の精度、スケール、またはサイズ値を使用するターゲットデータ型にマッピングする必要があります。例えば、ソースデータ型FLOAT(%)をNUMBER(38,10)などのターゲットデータ型の仕様にマッピングできます。
- 3[ルールの追加]をクリックします。
ルールがルールリストに表示されます。
ルールを削除するには、ルール行の右端にある[削除]アイコンをクリックします。
カスタムマッピングルールを使用してタスクをデプロイした後は、タスクがデプロイ解除されるまでルールを編集できません。
使用上の注意:
- •一般に、バイナリデータ型は文字データ型にマッピングできません。
- •長さまたは精度とスケール値が同じソースデータ型に対して複数のデータ型ルールを定義すると、データベース取り込みとレプリケーションタスクを保存できなくなります。
- •同じソースデータ型に対して複数のデータ型ルールを定義したが、%ワイルドカードを使用して、1つのルールで長さまたは精度とスケール値を表し、2番目のルールで特定の長さまたは精度とスケール値を表す場合、%ワイルドカードを使用したルールの前に、特定の値を含むルールが最初に処理されます。例えば、ソースデータ型FLOAT(84)とFLOAT(%)をマッピングする場合、FLOAT(84)ルールが最初に処理され、次にFLOAT(%)ルールが処理されて、サイズの異なる他のFLOATソースカラムがカバーされます。
- •ソースデータ型に長さまたは精度とスケール値が必要な場合は、%ワイルドカードまたは特定の値(例えば、VARCHAR(%)またはVARCHAR(10))を使用して必要な属性を設定してください。
- •無効なマッピングを定義すると、エラーメッセージがログに書き込まれます。その後、必要に応じてDBAのサポートを受けて、マッピングエラーを修正できます。
- •Oracleソースの場合、ソースオブジェクトの次のクエリによって返されるデータ型を使用する必要があります。
select dbms_metadata.get_ddl('TABLE', 'YOUR_TABLE_NAME','TABLE_OWNER_NAME') from dual;
- •データベース取り込みとレプリケーションは、データ型マッピングルールのBYTEおよびCHARセマンティクスをサポートしていません。
- •ソースデータ型にデフォルトの精度がある場合は、ルールで指定する必要があります。例えば、TIMESTAMPの代わりにTIMESTAMP(6)を使用する必要があります。