各製品の資料を入手。
詳細はこちら →CData
こんにちは!ウェブ担当の加藤です。マーケ関連のデータ分析や整備もやっています。
CData Cmdlets for DB2 を使えば、PowerShell からDB2 に手軽に連携して、データのCRUD やエクスポートを実行できます。
本記事では、DB2 への接続方法からCSV エクスポート、データの操作までサンプルコード付きで解説していきます。
それでは、まずはDB2 への接続設定からはじめていきましょう。接続設定にはCData DB2 Cmdlets が必要となります。右側のサイドバーから製品の全機能が使える30日間の無償トライアルがダウンロードできるので、ぜひご利用ください。
インストールが完了したら、プロファイルに以下の行を追加してください。次のPowerShell セッションでモジュールがロードされます。
Import-Module DB2Cmdlets;
Connect-DB2 コマンドを使ってDB2 との接続を設定します。各接続プロパティの取得方法は次に説明します。
$conn = Connect-DB2 -Server "$Server" -Port "$Port" -User "$User" -Password "$Password" -Database "$Database"
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;
これで接続設定は完了です。
接続が完了したので、Orders テーブルデータを取得して結果をCSV ファイルにエクスポートします。
Select-DB2 -Connection $conn -Table Orders | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myOrdersData.csv -NoTypeInformation
このコードでは、Select-DB2 から取得した結果をSelect-Object に流して、Export-Csv に渡す前にいくつかのプロパティを除外しています。これは、CData Cmdlets が接続情報、テーブル、およびカラム情報を結果セットのそれぞれの行に挿入するためです。それらの情報を表示したくない場合に、Export-Csv コマンドに渡す前に除外を先に行い、そのあとでCSV ファイルにエクスポートします。
それでは、続いてデータの削除や挿入・更新を実行してみます。
以下のように、フィルタリングで合致するレコードを削除することができます。
Select-DB2 -Connection $conn -Table Orders -Where "ShipCity = New York" | Remove-DB2
データの挿入や更新を使って、加工やクレンジングも行えます。以下の手順では、CSV ファイルのデータを読み込んで挿入対象のオブジェクトに同じレコードが存在するかを確認した上で、存在する場合にはデータを更新、存在しない場合にはデータの挿入を行います。
Import-Csv -Path C:\MyOrdersUpdates.csv | %{ $record = Select-DB2 -Connection $DB2 -Table Orders -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-DB2 -Connection $db2 -Table Orders -Columns ("OrderName","Freight") -Values ($_.OrderName, $_.Freight) -Where ("Id = `'"+$_.Id+"`'") }else{ Add-DB2 -Connection $db2 -Table Orders -Columns ("OrderName","Freight") -Values ($_.OrderName, $_.Freight) } }
このように、CData Cmdlets を使えばPowerShell でのDB2 データへの連携をシンプルに実現できます。ぜひCData PowerShell Cmdlets の30日間無償トライアルをダウンロードして、シンプルかつパワフルなデータ連携をお試しください。