Azure Data Factory または Synapse Analytics で DB2 からデータをコピーする
適用対象: Azure Data Factory Azure Synapse Analytics
ヒント
企業向けのオールインワン分析ソリューション、Microsoft Fabric の Data Factory をお試しください。 Microsoft Fabric は、データ移動からデータ サイエンス、リアルタイム分析、ビジネス インテリジェンス、レポートまで、あらゆるものをカバーしています。 無料で新しい試用版を開始する方法について説明します。
この記事では、Azure Data Factory のコピー アクティビティと Synapse Analytics パイプラインで、DB2 データベースからデータをコピーする方法の概要を説明します。 この記事は、コピー アクティビティの概要を示しているコピー アクティビティの概要に関する記事に基づいています。
サポートされる機能
この DB2 コネクタでは、次の機能がサポートされます。
サポートされる機能 | IR |
---|---|
Copy アクティビティ (ソース/-) | ① ② |
Lookup アクティビティ | ① ② |
① Azure 統合ランタイム ② セルフホステッド統合ランタイム
コピー アクティビティによってソースまたはシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関する記事の表をご覧ください。
具体的には、この DB2 コネクタでは、分散型リレーショナル データベース アーキテクチャ (DRDA) SQL アクセス マネージャー (SQLAM) バージョン 9、10、および 11 に対応した、次の IBM DB2 のプラットフォームとバージョンがサポートされています。 DDM/DRDA プロトコルが利用されます。
- IBM DB2 for z/OS 12.1
- IBM DB2 for z/OS 11.1
- IBM DB2 for i 7.3
- IBM DB2 for i 7.2
- IBM DB2 for i 7.1
- IBM DB2 for LUW 11
- IBM DB2 for LUW 10.5
- IBM DB2 for LUW 10.1
前提条件
データ ストアがオンプレ ミスネットワーク、Azure 仮想ネットワーク、または Amazon Virtual Private Cloud 内にある場合は、それに接続するようセルフホステッド統合ランタイムを構成する必要があります。
データ ストアがマネージド クラウド データ サービスである場合は、Azure Integration Runtime を使用できます。 ファイアウォール規則で承認されている IP にアクセスが制限されている場合は、Azure Integration Runtime の IP を許可リストに追加できます。
また、Azure Data Factory のマネージド仮想ネットワーク統合ランタイム機能を使用すれば、セルフホステッド統合ランタイムをインストールして構成しなくても、オンプレミス ネットワークにアクセスすることができます。
Data Factory によってサポートされるネットワーク セキュリティ メカニズムやオプションの詳細については、「データ アクセス戦略」を参照してください。
統合ランタイムには DB2 ドライバーが組み込まれているため、DB2 からデータをコピーするときにドライバーを手動でインストールする必要はありません。
作業の開始
パイプラインでコピー アクティビティを実行するには、次のいずれかのツールまたは SDK を使用します。
UI を使用して DB2 のリンク サービスを作成する
次の手順を使用して、Azure portal UI で DB2 のリンク サービスを作成します。
Azure Data Factory または Synapse ワークスペースの [管理] タブに移動し、[リンクされたサービス] を選択して、[新規] をクリックします。
DB2 を検索し、DB2 コネクタを選択します。
サービスの詳細を構成し、接続をテストして、新しいリンク サービスを作成します。
コネクタの構成の詳細
次のセクションでは、DB2 コネクタに固有の Data Factory エンティティを定義するために使用されるプロパティについて詳しく説明します。
リンクされたサービスのプロパティ
DB2 のリンクされたサービスでは、次のプロパティがサポートされます。
プロパティ | 内容 | 必須 |
---|---|---|
type | type プロパティは、次のように設定する必要があります:Db2 | はい |
connectionString | DB2 インスタンスに接続するために必要な情報を指定します。 パスワードを Azure Key Vault に格納して、接続文字列から password 構成をプルすることもできます。 詳細については、下記の例と、「Azure Key Vault への資格情報の格納」の記事を参照してください。 |
はい |
connectVia | データ ストアに接続するために使用される統合ランタイム。 詳細については、「前提条件」セクションを参照してください。 指定されていない場合は、既定の Azure 統合ランタイムが使用されます。 | いいえ |
接続文字列内の一般的なプロパティを次に示します。
プロパティ | 内容 | 必要 |
---|---|---|
server | DB2 サーバーの名前です。 サーバー名に続けて、コロンで区切ってポート番号を指定できます (例: server:port )。DB2 コネクタでは、DDM/DRDA プロトコルが利用されます。指定されていない場合、既定でポート 50000 が使用されます。 特定の DB2 データベースが使用するポートは、バージョンと設定によって異なる場合があります。たとえば、DB2 LUW の場合、既定のポートは 50000 です。AS400 の場合、既定のポートは 446 または448 (TLS が有効になっている場合) です。 ポートの一般的な構成方法については、DB2 z/OS、DB2 iSeries、DB2 LUW の各ドキュメントをご覧ください。 |
はい |
database | DB2 データベースの名前です。 | はい |
authenticationType | DB2 データベースへの接続に使用される認証の種類です。 使用可能な値:Basic。 |
はい |
username | DB2 データベースに接続するユーザー名を指定します。 | はい |
password | ユーザー名に指定したユーザー アカウントのパスワードを指定します。 このフィールドを SecureString とマークして安全に保存するか、Azure Key Vault に保存されているシークレットを参照します。 | はい |
packageCollection | データベースに対するクエリを実行したときに、サービスによって必要なパッケージを自動作成する場所を指定します。 これを設定しない場合、サービスでは {username} を規定値として使用します。 | いいえ |
certificateCommonName | Secure Sockets Layer (SSL) またはトランスポート層セキュリティ (TLS) 暗号化を使用する場合は、証明書共通名の値を入力する必要があります。 | いいえ |
ヒント
The package corresponding to an SQL statement execution request was not found. SQLSTATE=51002 SQLCODE=-805
というエラー メッセージが表示された場合は、そのユーザーに必要なパッケージが作成されていません。 既定では、サービスはDB2への接続に使用したユーザー名のコレクションの下にパッケージを作成します。 パッケージ コレクションのプロパティを指定することで、データベースに対するクエリを実行したときに、サービスによって必要なパッケージをどこに作成するかを指定します。 パッケージ コレクション名を特定できない場合は、packageCollection=NULLID
を設定してみてください。
例:
{
"name": "Db2LinkedService",
"properties": {
"type": "Db2",
"typeProperties": {
"connectionString": "server=<server:port>;database=<database>;authenticationType=Basic;username=<username>;password=<password>;packageCollection=<packagecollection>;certificateCommonName=<certname>;"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
例: パスワードを Azure Key Vault に格納する
{
"name": "Db2LinkedService",
"properties": {
"type": "Db2",
"typeProperties": {
"connectionString": "server=<server:port>;database=<database>;authenticationType=Basic;username=<username>;packageCollection=<packagecollection>;certificateCommonName=<certname>;",
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
以下のペイロードで DB2 のリンクされたサービスを使用していた場合、引き続きそのままサポートされますが、今後は新しいものを使用することをお勧めします。
以前のペイロード:
{
"name": "Db2LinkedService",
"properties": {
"type": "Db2",
"typeProperties": {
"server": "<servername:port>",
"database": "<dbname>",
"authenticationType": "Basic",
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
}
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
データセットのプロパティ
データセットを定義するために使用できるセクションとプロパティの完全な一覧については、データセットに関する記事をご覧ください。 このセクションでは、DB2 データセット でサポートされるプロパティの一覧を示します。
DB2 からのデータ コピーについては、次のプロパティがサポートされています。
プロパティ | 内容 | 必須 |
---|---|---|
type | データセットの type プロパティは、次のように設定する必要があります:Db2Table | はい |
schema | スキーマの名前。 | いいえ (アクティビティ ソースの "query" が指定されている場合) |
table | テーブルの名前。 | いいえ (アクティビティ ソースの "query" が指定されている場合) |
tableName | スキーマがあるテーブルの名前。 このプロパティは下位互換性のためにサポートされています。 新しいワークロードでは、schema と table を使用します。 |
いいえ (アクティビティ ソースの "query" が指定されている場合) |
例
{
"name": "DB2Dataset",
"properties":
{
"type": "Db2Table",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<DB2 linked service name>",
"type": "LinkedServiceReference"
}
}
}
RelationalTable
型のデータセットを使用していた場合、現状のまま引き続きサポートされますが、今後は新しいものを使用することをお勧めします。
コピー アクティビティのプロパティ
アクティビティの定義に利用できるセクションとプロパティの完全な一覧については、パイプラインに関する記事を参照してください。 このセクションでは、DB2 ソースでサポートされるプロパティの一覧を示します。
ソースとしての DB2
DB2 からデータをコピーするために、コピー アクティビティの source セクションでは次のプロパティがサポートされています。
プロパティ | 内容 | 必須 |
---|---|---|
type | コピー アクティビティのソースの type プロパティは、次のように設定する必要があります:Db2Source | はい |
query | カスタム SQL クエリを使用してデータを読み取ります。 (例: "query": "SELECT * FROM \"DB2ADMIN\".\"Customers\"" )。 |
いいえ (データセットの "tableName" が指定されている場合) |
例:
"activities":[
{
"name": "CopyFromDB2",
"type": "Copy",
"inputs": [
{
"referenceName": "<DB2 input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "Db2Source",
"query": "SELECT * FROM \"DB2ADMIN\".\"Customers\""
},
"sink": {
"type": "<sink type>"
}
}
}
]
RelationalSource
型のソースを使用していた場合は現状のまま引き続きサポートされますが、今後は新しいものを使用することをお勧めします。
DB2 のデータ型のマッピング
DB2 からデータをコピーするときは、DB2 のデータ型からサービスでの内的処理に使用する暫定データ型への、次のマッピングを使用します。 コピー アクティビティでソースのスキーマとデータ型がシンクにマッピングされるしくみについては、スキーマとデータ型のマッピングに関する記事を参照してください。
DB2 データベース型 | 中間サービス データ型 |
---|---|
BigInt | Int64 |
Binary | Byte[] |
BLOB | Byte[] |
Char | String |
Clob | String |
Date | Datetime |
DB2DynArray | String |
DbClob | String |
Decimal | Decimal |
DecimalFloat | Decimal |
Double | Double |
Float | Double |
Graphic | String |
Integer | Int32 |
LongVarBinary | Byte[] |
LongVarChar | String |
LongVarGraphic | String |
数値 | Decimal |
Real | Single |
SmallInt | Int16 |
Time | TimeSpan |
Timestamp | DateTime |
VarBinary | Byte[] |
VarChar | String |
VarGraphic | String |
xml | Byte[] |
Lookup アクティビティのプロパティ
プロパティの詳細については、Lookup アクティビティに関するページを参照してください。
関連するコンテンツ
Copy アクティビティでソースおよびシンクとしてサポートされるデータ ストアの一覧については、サポートされるデータ ストアに関するセクションを参照してください。