各製品の資料を入手。
詳細はこちら →CData
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData Cmdlets for Domino を使えば、PowerShell からHCL Domino データ データにリアルタイムで連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for Domino およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。
まずは、PowerShell でHCL Domino への接続を行います。レプリケーションは4つのステップがあります。
Domino のデータに接続するには、以下のプロパティを設定してください。
Domino は、ログインクレデンシャルまたはAzure Active Directory OAuth アプリケーションを使用した認証をサポートしています。
ログインクレデンシャルで認証するには、以下のプロパティを設定してください:
ドライバーはログインクレデンシャルを使用して、自動的にOAuth トークン交換を実行します。
この認証方法は、Azure Active Directory をIdP として使用してJWTトークンを取得します。Azure Active Directory にカスタムのアプリケーションを作成し、それをIdP として設定する必要があります。そのためには、ヘルプドキュメントの指示に従ってください。その後、以下のプロパティを設定します。
テナントID は、Azure ポータルのAzure Active Directory > プロパティページに表示されているディレクトリID と同じです。
モジュールのインストール:
Install-Module DominoCmdlets
HCL Domino への接続:
$domino = Connect-Domino -Server $Server -Database $Database -Port $Port -SSLClientCertType $SSLClientCertType -SSLClientCert $SSLClientCert -SSLServerCert $SSLServerCert
取得ターゲットのリソースの取得:
$data = Select-Domino -Connection $domino -Table "ByName"
Invoke-Domino cmdlet を使って、SQL-92 クエリを使用することもできます:
$data = Invoke-Domino -Connection $domino -Query 'SELECT * FROM ByName WHERE City = @City' -Params @{'@City'='Miami'}
戻り値からカラム名のリストを保存します。
$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
HCL Domino、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、HCL Domino のリソース(ByName)と同じテーブル名を持っている必要があります。
$data | % {
$row = $_
$values = @()
$columns | % {
$col = $_
$values += $row.$($col)
}
Add-MySQL -Connection $mysql -Table "ByName" -Columns $columns -Values $values
}
一度PowerShell でHCL Domino とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:
Select-Domino -Connection $domino -Table "ByName" | % {
$row = $_
$values = @()
$columns | % {
$col = $_
$values += $row.$($col)
}
Add-MySQL -Connection $mysql -Table "ByName" -Columns $columns -Values $values
}
別のPowerShell モジュールで、HCL Domino を別のデータベースに複製する場合、Select-Domino cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}
これで、HCL Domino データをMySQL に複製できました。分析、BI などでHCL Domino データをMySQL から使うことができるようになります。