ノーコードでクラウド上のデータとの連携を実現。
詳細はこちら →IBM DB2 Cmdlets の30日間無償トライアルをダウンロード
30日間の無償トライアルへ製品の詳細
IBM DB2 Data Cmdlets 相談したいIBM DB2 にリアルタイムアクセスできる簡単に使えるPowerShell Cmdlets セット。Cmdlets を使って、SQL サーバーと同じようにデータを簡単に読み出し、書き込み、更新、および削除できます。
CData
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData Cmdlets for DB2 を使えば、PowerShell からDB2 データ データにリアルタイムで連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for DB2 およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。
まずは、PowerShell でDB2 への接続を行います。レプリケーションは4つのステップがあります。
DB2 への接続には以下を入力します:
対応するDB2 のドライバーをインストールする必要があります。
Windows では、IBM Data Server Provider をインストールするだけで十分です。インストールがmachine.config への書き込みを行います。
Java では、IBM Data Server Driver JAR をアプリケーションのwww\WEB-INF\lib\ フォルダに配置する必要があります。
パスワード方式によるSSH接続時に必要なプロパティ一覧を以下に示します。
接続文字列形式では以下のようになります。
Server=10.0.1.2;Port=50000;User=admin;Password=admin;Database=testUseSSH=true;SSHAuthMode=Password;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHPassword=sshpasswd;
公開鍵認証によるSSH接続時に必要なプロパティ一覧を以下に示します。
接続文字列形式では以下のようになります。
Server=10.0.1.2;Port=50000;User=admin;Password=admin;Database=test;UseSSH=true;SSHAuthMode=Public_Key;SSHClientCertType=PUBLIC_KEY_FILE;SSHPort=22;SSHServer=ssh-server;SSHUser=root;SSHClientCert=C:\Keys\key.pem;
モジュールのインストール:
Install-Module DB2Cmdlets
DB2 への接続:
$db2 = Connect-DB2 -Server $Server -Port $Port -User $User -Password $Password -Database $Database
取得ターゲットのリソースの取得:
$data = Select-DB2 -Connection $db2 -Table "Orders"
Invoke-DB2 cmdlet を使って、SQL-92 クエリを使用することもできます:
$data = Invoke-DB2 -Connection $db2 -Query 'SELECT * FROM Orders WHERE ShipCity = @ShipCity' -Params @{'@ShipCity'='New York'}
戻り値からカラム名のリストを保存します。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name
カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。
モジュールのインストール:
Install-Module MySQLCmdlets
MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:
$mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
DB2、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、DB2 のリソース(Orders)と同じテーブル名を持っている必要があります。
$data | % {
$row = $_
$values = @()
$columns | % {
$col = $_
$values += $row.$($col)
}
Add-MySQL -Connection $mysql -Table "Orders" -Columns $columns -Values $values
}
一度PowerShell でDB2 とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:
Select-DB2 -Connection $db2 -Table "Orders" | % {
$row = $_
$values = @()
$columns | % {
$col = $_
$values += $row.$($col)
}
Add-MySQL -Connection $mysql -Table "Orders" -Columns $columns -Values $values
}
別のPowerShell モジュールで、DB2 を別のデータベースに複製する場合、Select-DB2 cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}
これで、DB2 データをMySQL に複製できました。分析、BI などでDB2 データをMySQL から使うことができるようになります。