CData Cmdlets for PostgreSQL 2019J - Online Help

接続の確立

CData Cmdlets for PostgreSQL 2019J - Build 19.0.7354

CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でPostgreSQL Cmdlets を使用する例を示します。

インストールおよび接続

PSGet がある場合は、PowerShell Gallery から次のコマンドを使ってcmdlet をインストールできます。CData サイトからセットアップを取得することもできます。

Install-Module PostgreSQLCmdlets

プロファイルに以下を追加すると、次のセッションでcmdlet がロードされます。

Import-Module PostgreSQLCmdlets;

Connect-PostgreSQL cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。

$conn = Connect-PostgreSQL -User 'postgres' -Password 'admin' -Server '127.0.0.1' -Port '5432' -Database 'postgres'

Connecting to PostgreSQL

The following connection properties are required in order to connect to data.

  • Server: The host name or IP of the server hosting the PostgreSQL database.
  • Port: The port of the server hosting the PostgreSQL database.

You can also optionally set the following:

  • Database: The default database to connect to when connecting to the PostgreSQL Server. If this is not set, the user's default database will be used.

Connect Using Standard Authentication

To authenticate using standard authentication, set the following:

  • User: The user which will be used to authenticate with the PostgreSQL server.
  • Password: The password which will be used to authenticate with the PostgreSQL server.

Connect Using SSL Authentication

You can leverage SSL authentication to connect to PostgreSQL data via a secure session. Configure the following connection properties to connect to data:

  • SSLClientCert: Set this to the name of the certificate store for the client certificate. Used in the case of 2-way SSL, where truststore and keystore are kept on both the client and server machines.
  • SSLClientCertPassword: If a client certificate store is password-protected, set this value to the store's password.
  • SSLClientCertSubject: The subject of the TLS/SSL client certificate. Used to locate the certificate in the store.
  • SSLClientCertType:; The certificate type of the client store.
  • SSLServerCert: The certificate to be accepted from the server.

データの取得

接続の作成が完了したら、リレーショナルデータベースに対して通常行える操作を 別のcmdlet を使って実行できます。 Select-PostgreSQL cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。

$results = Select-PostgreSQL -Connection $conn -Table "Orders" -Columns @("ShipName, ShipCity") -Where "ShipCountry='USA'"
Invoke-PostgreSQL cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。

cmdlet 出力のパイプ処理

cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。

Select-PostgreSQL -Connection $conn -Table Orders -Where "ShipCountry = 'USA'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myOrdersData.csv -NoTypeInformation

Select-PostgreSQL からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。

ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。

 
PS C:\> $conn  = Connect-PostgreSQL -User 'postgres' -Password 'admin' -Server '127.0.0.1' -Port '5432' -Database 'postgres'
PS C:\> $row = Select-PostgreSQL -Connection $conn -Table "Orders" -Columns (ShipName, ShipCity) -Where "ShipCountry = 'USA'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
  "Connection":  {

  },
  "Table":  "Orders",
  "Columns":  [

  ],
  "ShipName":  "MyShipName",
  "ShipCity":  "MyShipCity"
} 

データの削除

以下は、抽出条件に合うあらゆるレコードを削除します。

Select-PostgreSQL -Connection $conn -Table Orders -Where "ShipCountry = 'USA'" | Remove-PostgreSQL

データの更新

cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをPostgreSQL にロードします。

Import-Csv -Path C:\MyOrdersUpdates.csv | %{
  $record = Select-PostgreSQL -Connection $conn -Table Orders -Where ("Id = `'"+$_.Id+"`'")
  if($record){
    Update-PostgreSQL -Connection $conn -Table Orders -Columns @("ShipName","ShipCity") -Values @($_.ShipName, $_.ShipCity) -Where "Id  = `'$_.Id`'"
  }else{
    Add-PostgreSQL -Connection $conn -Table Orders -Columns @("ShipName","ShipCity") -Values @($_.ShipName, $_.ShipCity)
  }
}

 
 
Copyright (c) 2020 CData Software, Inc. - All rights reserved.
Build 19.0.7354.0