接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でCloudant Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module CloudantCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module CloudantCmdlets;
Connect-Cloudant cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Cloudant -User 'abc123' -Password 'abcdef'
Cloudant への認証
Cloudant は2種類の認証をサポートします。- OAuth:OAuth 規格に基づいた認証を行います。AuthScheme をOAuth に設定し、Cloudant インスタンスのAPIKey とURL の値を指定します。
- Basic:基本的なユーザー名 / パスワード認証。AuthScheme をBasic に設定します。
IBM Cloudant Legacy
IBM Cloudant Legacy 経由で接続するには、有効なIBM Cloudant サービスクレデンシャルを持っていることを確認してください。IBM Cloudant のサービスクレデンシャルを作成するには:
- IBM Cloud ダッシュボードにログインします。
- Menu icon -> Resource List に移動し、IBM Cloudant サービスインスタンスを開きます。
- メニューで、Service credentials をクリックします。
- New credential をクリックします。Cloudant はAdd new credential ウィンドウを表示します。
- 新しい資格情報の名前を入力します。
- Add をクリックします。 資格情報がService credentials テーブルに追加されます。
- Actions -> View credentials をクリックします。
- JSON ファイルからUser およびPassword の値を取得します。
取得した値を使用して、User およびPassword を設定します。
ローカルインスタンスへの認証
Cloudant は、バージョン1.1.0以上のローカルインスタンスのデータへの認証をサポートします。ローカルインスタンスへの認証を行うには、次のパラメータを設定します。
- Url:ローカルインスタンスのURL。例: http://localhost:8006
- User:ユーザーネーム。
- Password:パスワード。
データの取得
Select-Cloudant cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Cloudant -Connection $conn -Table "Movies" -Columns @("MovieRuntime, MovieRating") -Where "MovieRating='R'"Invoke-Cloudant cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Cloudant -Connection $conn -Table Movies -Where "MovieRating = 'R'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myMoviesData.csv -NoTypeInformation
Select-Cloudant からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Cloudant -User 'abc123' -Password 'abcdef' PS C:\> $row = Select-Cloudant -Connection $conn -Table "Movies" -Columns (MovieRuntime, MovieRating) -Where "MovieRating = 'R'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": "Movies", "Columns": [ ], "MovieRuntime": "MyMovieRuntime", "MovieRating": "MyMovieRating" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-Cloudant -Connection $conn -Table Movies -Where "MovieRating = 'R'" | Remove-Cloudant
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをCloudant にロードします。
Import-Csv -Path C:\MyMoviesUpdates.csv | %{ $record = Select-Cloudant -Connection $conn -Table Movies -Where ("Id = `'"+$_.Id+"`'") if($record){ Update-Cloudant -Connection $conn -Table Movies -Columns @("MovieRuntime","MovieRating") -Values @($_.MovieRuntime, $_.MovieRating) -Where "Id = `'$_.Id`'" }else{ Add-Cloudant -Connection $conn -Table Movies -Columns @("MovieRuntime","MovieRating") -Values @($_.MovieRuntime, $_.MovieRating) } }