接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でSAPHanaXSA Cmdlets を使用する例を示します。
SAP HANA XSA はOAuth 認証標準を利用しています。接続する前に、SAP HANA XSA OData サービスを確立する必要があります。カスタムOAuth アプリの作成 を参照してください。
パスワードベースのOAuth を使用してSAP Hana XSA に接続するには:
- OAuthClientId:UAA サービスJSON ファイルで指定されたClient Id に設定。
- OAuthClientSecret:UAA サービスJSON ファイルで指定されたClient Secret に設定。
- URL:OData サービスエンドポイントに設定。
- XSUAAURL:UAA サービスURL に設定。
- User:アカウントのユーザー名に設定。
- Password:アカウントのパスワードに設定。
OData サービスを設定したら、カスタムクレデンシャル を使用して接続を確立できます。
接続オブジェクトの作成
Connect-SAPHanaXSA cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-SAPHanaXSA -OAuthClientID "MyOAuthClientID" -OAuthClientSecret "MyOAuthClientSecret" -URL "https://hxehost:51027/euro.xsodata" -CallbackURL "http://localhost:33333"
データの取得
Select-SAPHanaXSA cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-SAPHanaXSA -Connection $conn -Table "SampleTable" -Columns @("Id, Column1") -Where "Column2='Bob'"
Invoke-SAPHanaXSA cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-SAPHanaXSA -Connection $conn -Table SampleTable -Where "Column2 = 'Bob'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\mySampleTableData.csv -NoTypeInformation
Select-SAPHanaXSA からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-SAPHanaXSA -OAuthClientID "MyOAuthClientID" -OAuthClientSecret "MyOAuthClientSecret" -URL "https://hxehost:51027/euro.xsodata" -CallbackURL "http://localhost:33333"
PS C:\> $row = Select-SAPHanaXSA -Connection $conn -Table "SampleTable" -Columns (Id, Column1) -Where "Column2 = 'Bob'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
"Connection": {
},
"Table": "SampleTable",
"Columns": [
],
"Id": "MyId",
"Column1": "MyColumn1"
}
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-SAPHanaXSA -Connection $conn -Table SampleTable -Where "Column2 = 'Bob'" | Remove-SAPHanaXSA
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをSAP HANA XSA にロードします。
Import-Csv -Path C:\MySampleTableUpdates.csv | %{
$record = Select-SAPHanaXSA -Connection $conn -Table SampleTable -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-SAPHanaXSA -Connection $conn -Table SampleTable -Columns @("Id","Column1") -Values @($_.Id, $_.Column1) -Where "Id = `'$_.Id`'"
}else{
Add-SAPHanaXSA -Connection $conn -Table SampleTable -Columns @("Id","Column1") -Values @($_.Id, $_.Column1)
}
}