接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でNeo4j Cmdlets を使用する例を示します。
Neo4j への接続
Neo4j に接続するには、以下のオプションがあります。
Neo4j AuraDB に接続する場合は、Query API を使用する必要があります。
セルフホスト型のNeo4j に接続する場合、バージョンに応じてQuery API とHTTP API を選択できます。
セルフホスト Neo4j への接続
Query API
Query API 経由でNeo4j に接続するには、次の接続プロパティを設定します。- API:Query に設定。
- Server:Neo4j インスタンスをホスティングしているサーバー。サーバー名やアドレスの前にHTTP やHTTPS のプロトコルの接頭辞を付加することも可能です。
- Port:Neo4j サービスが稼働しているポート。セルフマネージドインスタンスでは、Query API のデフォルトのポートは7474 です。HTTPS で接続する場合は、Server で指定したNeo4j インスタンスのHTTPS ポートを指定してください。
- User:Neo4j インスタンスを使用しているユーザーのユーザー名。
- Password:Neo4j インスタンスを使用しているユーザーのパスワード。
- Database:Neo4j インスタンスで対象とするデータベース。デフォルトはNeo4j です。
HTTP API
HTTP API 経由でNeo4j に接続するには、次の接続プロパティを設定します。- API:HTTP に設定。
- Server:Neo4j インスタンスをホスティングしているサーバー。サーバー名やアドレスの前にHTTP やHTTPS のプロトコルの接頭辞を付加することも可能です。
- Port:Neo4j サービスが稼働しているポート。プロバイダーは、デフォルトでHTTP 7474 ポートに接続します。HTTPS で接続する場合は、Server で指定したNeo4j インスタンスのHTTPS ポートを指定してください。
- User:Neo4j インスタンスを使用しているユーザーのユーザー名。
- Password:Neo4j インスタンスを使用しているユーザーのパスワード。
- Database:Neo4j インスタンスで対象とするデータベース。デフォルトはNeo4j です。
Neo4j AuraDB への接続
Neo4j AuraDB
Neo4j Aura インスタンスに接続するには、上記のQuery API 構成と同じプロパティが必要です。プロパティの値を見つける際の留意点は、以下の通りです。- API:Query に設定。
- Server:Neo4j Aura クラウドコンソールで、インスタンスのInspect メニューにあるQuery API URL に表示されます。Neo4j.io の後は何も入力しないでください。
- Port:443 に設定。
- User:Neo4j インスタンスを使用しているユーザーのユーザー名。
- Password:インスタンスの作成時、または新しいユーザーを招待したときに一度だけ提供されます。
- Database:現在、Neo4j Aura のデプロイメントでは、データベース名をデフォルト値のNeo4j から変更することはできません。
接続オブジェクトの作成
Connect-Neo4j cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Neo4j -server "localhost" -port "7474" -user "neo4j" -password "password"
データの取得
Select-Neo4j cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Neo4j -Connection $conn -Table "ProductCategory" -Columns @("CategoryId, CategoryName") -Where "CategoryOwner='Bob'"
Invoke-Neo4j cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Neo4j -Connection $conn -Table ProductCategory -Where "CategoryOwner = 'Bob'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myProductCategoryData.csv -NoTypeInformation
Select-Neo4j からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Neo4j -server "localhost" -port "7474" -user "neo4j" -password "password"
PS C:\> $row = Select-Neo4j -Connection $conn -Table "ProductCategory" -Columns (CategoryId, CategoryName) -Where "CategoryOwner = 'Bob'" | select -first 1
PS C:\> $row | ConvertTo-Json
{
"Connection": {
},
"Table": "ProductCategory",
"Columns": [
],
"CategoryId": "MyCategoryId",
"CategoryName": "MyCategoryName"
}
データの削除
以下は、抽出条件に合うあらゆるレコードを削除します。
Select-Neo4j -Connection $conn -Table ProductCategory -Where "CategoryOwner = 'Bob'" | Remove-Neo4j
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをNeo4j にロードします。
Import-Csv -Path C:\MyProductCategoryUpdates.csv | %{
$record = Select-Neo4j -Connection $conn -Table ProductCategory -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-Neo4j -Connection $conn -Table ProductCategory -Columns @("CategoryId","CategoryName") -Values @($_.CategoryId, $_.CategoryName) -Where "Id = `'$_.Id`'"
}else{
Add-Neo4j -Connection $conn -Table ProductCategory -Columns @("CategoryId","CategoryName") -Values @($_.CategoryId, $_.CategoryName)
}
}