接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でTeradata Cmdlets を使用する例を示します。
インストールおよび接続
PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。
Install-Module TeradataCmdlets
プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。
Import-Module TeradataCmdlets;
Connect-Teradata cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Teradata -User 'Admin' -Password 'test123' -Database 'Northwind' -DataSource '127.0.0.1'
Deploying the Provider
To connect using the CData Cmdlets PowerShell Module for Teradata, you must install the Teradata .NET Data Provider into the GAC.
Teradata への接続
本製品 は、公式のTeradata Database ドライバーをラップします。 同じ接続プロパティを使用してCData Cmdlets PowerShell Module for Teradata に接続し、基底のTeradata ドライバーと同じ機能にアクセスできます。
必須プロパティ
Teradata に接続するには以下のプロパティを設定します。
- AuthScheme:Teradata サーバーの必要な認証メカニズムに応じて、TD2(デフォルト)またはLDAP のいずれかを指定。
- User:Teradata ユーザーのユーザーネーム。
- Password:Teradata ユーザーのパスワード。
- DataSource:Teradata サーバー名、DBC 名、またはTDPID を指定。
- Port:サーバーが実行されているポートを指定。
- Database:データベース名を指定。指定されない場合は、本製品 はデフォルトデータベースに接続されます。
TLS/SSL 設定
TLS/SSL を使用して接続を暗号化するには、DataEncryption を有効にします。
データの取得
接続の作成が完了したら、リレーショナルデータベースに対して通常行える操作を
別のcmdlet を使って実行できます。 Select-Teradata cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Teradata -Connection $conn -Table ""CData"."dbo".NorthwindProducts" -Columns @("ProductId, ProductName") -Where "CategoryId='5'"Invoke-Teradata cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Teradata -Connection $conn -Table "CData"."dbo".NorthwindProducts -Where "CategoryId = '5'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\my"CData"."dbo".NorthwindProductsData.csv -NoTypeInformation
Select-Teradata からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Teradata -User 'Admin' -Password 'test123' -Database 'Northwind' -DataSource '127.0.0.1' PS C:\> $row = Select-Teradata -Connection $conn -Table ""CData"."dbo".NorthwindProducts" -Columns (ProductId, ProductName) -Where "CategoryId = '5'" | select -first 1 PS C:\> $row | ConvertTo-Json { "Connection": { }, "Table": ""CData"."dbo".NorthwindProducts", "Columns": [ ], "ProductId": "MyProductId", "ProductName": "MyProductName" }
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-Teradata -Connection $conn -Table "CData"."dbo".NorthwindProducts -Where "CategoryId = '5'" | Remove-Teradata
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをTeradata にロードします。
Import-Csv -Path C:\My"CData"."dbo".NorthwindProductsUpdates.csv | %{ $record = Select-Teradata -Connection $conn -Table "CData"."dbo".NorthwindProducts -Where ("ProductId = `'"+$_.ProductId+"`'") if($record){ Update-Teradata -Connection $conn -Table "CData"."dbo".NorthwindProducts -Columns @("ProductId","ProductName") -Values @($_.ProductId, $_.ProductName) -Where "ProductId = `'$_.ProductId`'" }else{ Add-Teradata -Connection $conn -Table "CData"."dbo".NorthwindProducts -Columns @("ProductId","ProductName") -Values @($_.ProductId, $_.ProductName) } }