接続の確立
CData Cmdlets ユーザーは、データモジュールをインストールし、接続プロパティを設定してスクリプトを開始できます。このセクションでは、CSV インポートおよびエクスポートcmdlet などのネイティブPowerShell cmdlet でAccess Cmdlets を使用する例を示します。
CData Cmdlets PowerShell Module for Microsoft Access を使用すると、ローカルおよびリモートのMS Access database リソースに接続できます。データソースへの接続に必要なプロパティに加えて、DataSource プロパティをMS Access database リソースの場所に設定します。
ローカルファイルへの接続
ConnectionType をLocal に設定します。ローカルファイルは、SELECT\INSERT\UPDATE\DELETE をサポートします。
DataSource を次のようなMS Access database ファイルへのフルパス(ファイル名を含む)に設定します:C:\Users\Public\Documents\MyDatabase.accdb。
Cloud-Hosted Microsoft Access ファイルへの接続
本製品 はさまざまなクラウドストレージ上にホストされたMicrosoft Access ファイルからデータを取得することができますが、INSERT、UPDATE、DELETE はローカルファイル以外ではサポートされていません。クラウド上のファイルをINSERT、UPDATE、DELETE する必要がある場合は、そのクラウドサービスに対応するCData 本製品 をダウンロードし(ストアドプロシージャでサポートされています)、ローカルファイルの対応する本製品 に変更を加え、そのクラウドソース用のストアドプロシージャを使ってファイルをアップロードできます。
例えば、SharePoint 上に格納されたファイルをアップデートしたい場合、CData SharePoint 本製品 のDownloadDocument プロシージャを使用してMicrosoft Access ファイルをダウンロードし、CData Microsoft Access 本製品 でローカルのMicrosoft Access ファイルをアップデートして、最後にSharePoint 本製品 のUploadDocument プロシージャを使って変更されたファイルをSharePoint にアップロードできます。
DataSource 接続プロパティの先頭にある一意の接頭辞は、本製品 が対象とするクラウドデータストアを識別するために使用され、残りのパスは目的のフォルダ(1ファイルにつき1テーブル)または単一ファイル(単一テーブル)への相対パスとなります。
Amazon S3
Amazon S3 に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:ConnectionType をAmazon S3 に設定。
- DataSource:a MS Access database file in a bucket:s3://bucket1/folder1/MyDatabase.accdb に設定。
- Volume およびBucket を作成し、そのバケット:s3://linktobucket/MyDatabase.accdb にsymbolic link を作成した後、Cloudera Ozone に保存されているMicrosoft Access リソースに接続することもできます。
Amazon S3 でホストされているMS Access database ファイルへの接続および認証について詳しくは、Amazon S3 への接続 を参照してください。
Azure Blob Storage
Azure Blob Storage に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:Azure Blob Storage に設定。
- DataSource:コンテナの名前およびBlob の名前に設定。例えば、azureblob://mycontainer/myblob/MyDatabase.accdb です。
Amazon Blob Storage でホストされているMS Access database ファイルへの接続および認証について詳しくは、Azure Blob Storage への接続 を参照してください。
Azure Data Lake Storage
Azure Data Lake Storage に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:Azure Data Lake Storage Gen1、Azure Data Lake Storage Gen2、またはAzure Data Lake Storage Gen2 SSL に設定。
- DataSource:the name of the file system, the name of the folder which contains your Microsoft Access file, and the name of a MS Access database file に設定。次に例を示します。
- Gen 1:adl://myfilesystem/folder1/MyDatabase.accdb
- Gen 2:abfs://myfilesystem/folder1/MyDatabase.accdb
- Gen 2 SSL:abfss://myfilesystem/folder1/MyDatabase.accdb
Azure Data Lake Storage でホストされているMS Access database ファイルへの接続および認証について詳しくは、Azure Data Lake Storage への接続 を参照してください。
Azure File Storage
接続するには次のプロパティを設定します。
- ConnectionType:Azure Files に設定。
- DataSource:Azure ファイル共有の名前とリソースの名前に設定。例:azurefile://fileShare/remotePath/MyDatabase.accdb。
- AzureStorageAccount(必須):Azure ファイルに紐づいているアカウントに設定。
Azure アクセスキーまたはAzure 共有アクセス署名のいずれかで認証できます。次のいずれか1つを設定してください。
- AzureAccessKey:Azure ファイルに紐づいているアクセスキーに設定。
- AzureSharedAccessSignature:Azure ファイルに紐づいている共有アクセス署名に設定。
Box
Box に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:Box に設定。
- DataSource:the name of the file system, the name of the folder which contains your Microsoft Access files, and the name of a MS Access database file に設定。例えば、box://folder1/MyDatabase.accdbです。
Box でホストされているMS Access database ファイルへの接続および認証について詳しくは、Box への接続 を参照してください。
Dropbox
Dropbox に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:Dropbox に設定。
- DataSource:the path to a MS Access database file に設定。例えば、dropbox://folder1/MyDatabase.accdb です。
Dropbox でホストされているMS Access database ファイルへの接続および認証について詳しくは、Dropbox への接続 を参照してください。
FTP
本製品 は、FTP サーバーへのプレーンテキスト接続およびSSL/TLS 接続の両方をサポートします。
次の接続プロパティを設定して接続します。
- ConnectionType:FTP またはFTPS のいずれかに設定。
- DataSource:the address of the server followed by the path to the MS Access database file に設定。例:ftp://localhost:990/folder1/MyDatabase.accdb。
- User:接続するFTP(S) サーバーのユーザー名に設定。
- Password:接続するFTP(S) サーバーのパスワードに設定。
Google Cloud Storage
Google Cloud Storage に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:Google Cloud Storage に設定。
- DataSource:the name of the file system, the name of the folder which contains your Microsoft Access files, and the name of a MS Access database file へのパスに設定。例えば、gs://bucket/remotePath/MyDatabase.accdb です。
Google Cloud Storage でホストされているMS Access database ファイルへの接続および認証について詳しくは、Google Cloud Storage への接続 を参照してください。
Google Drive
Google Drive に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:Google Drive に設定。
- DataSource:the name of the file system, the name of the folder which contains your Microsoft Access files, and the name of a MS Access database file へのパスに設定。例えば、gdrive://folder1/MyDatabase.accdb です。
Google Drive でホストされているMS Access database ファイルへの接続および認証について詳しくは、Google Drive への接続 を参照してください。
HDFS
HDFS に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:HDFS またはHDFS Secure に設定。
- DataSource:the path to a MS Access database file に設定。次に例を示します。
- HDFS:webhdfs://host:port/remotePath/MyDatabase.accdb
- HDFS Secure:webhdfss://host:port/remotePath/MyDatabase.accdb
- Cloudera Ozone(HttpFS ゲートウェイ経由): webhdfs://<Ozone server>:<port>/user/myuser/MyDatabase.accdb
- Ozone に保存されているMicrosoft Access ファイルにアクセスするには、Kerberos 認証を使用する必要があります。
- Ozone クラスタにOzone 718.2.x があることを確認してください。
- Cloudera Manager version 7.10.1 が必要です。
HDFS データソースへの接続に使用できる認証方法は、匿名認証とKerberos 認証の2つがあります。
匿名認証
状況によっては、認証接続プロパティなしでHDFS に接続できます。 そのためには、AuthScheme プロパティをNone(デフォルト)に設定します。
Kerberos を使用した認証
認証資格情報が必要な場合、認証にKerberos を使用することができます。 Kerberos で認証する方法についての詳細は、Kerberos の使用 を参照してください。
HTTP Streams
HTTP streams に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:HTTP またはHTTPS に設定。
- DataSource:HTTP(S) stream のURI に設定。次に例を示します。
- HTTP: http://remoteStream/MyDatabase.accdb
- HTTPS: https://remoteStream/MyDatabase.accdb
HTTP Streams でホストされているMS Access database ファイルへの接続および認証について詳しくは、HTTP Streams への接続 を参照してください。
IBM Cloud Object Storage
IBM Cloud Object Storage に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:IBM Object Storage Source に設定。
- DataSource:バケットおよびフォルダに設定。例えば、ibmobjectstorage://bucket1/remotePath/MyDatabase.accdb です。
- Region:このプロパティをIBM インスタンスリージョンに設定。例:eu-gb.
IBM Cloud Object Storage でホストされているMS Access database ファイルへの接続および認証について詳しくは、IBM Object Storage への接続 を参照してください。
OneDrive
OneDrive に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:OneDrive に設定。
- DataSource:the path to a MS Access database file に設定。例えば、onedrive://remotePath/MyDatabase.accdb です。
OneDrive でホストされているMS Access database ファイルへの接続および認証について詳しくは、OneDrive への接続 を参照してください。
OneLake
OneLake に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:OneLake に設定。
- DataSource:ワークスペース名、アイテム名、アイテムタイプの順に設定。オプションで、ルートフォルダとして使用するフォルダパスを含めます。例:onelake://Workspace/Test.LakeHouse/Files/CustomFolder/MyDatabase.accdb。
OneLake でホストされているMS Access database ファイルへの接続および認証について詳しくは、OneLake への接続 を参照してください。
Oracle Cloud Storage
IAMSecretKey で認証するには、次のプロパティを設定します。
- ConnectionType:ConnectionType をOracle Cloud Storage に設定。
- DataSource:a MS Access database file in a bucket:os://bucket/remotePath/MyDatabase.accdb に設定。
- AccessKey: Oracle Cloud のAccess Key に設定。
- SecretKey:Oracle Cloud のSecret Key に設定。
- OracleNamespace:Oracle cloud のnamespace に設定。
- Region(オプション):S3ライクなWeb サービスのホスティングリージョンに設定。
SFTP
SFTP に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:SFTP に設定。
- DataSource:これをサーバーのアドレスに設定し、パスを続けて指定します。例えば、sftp://server:port/remotePath/MyDatabase.accdb です。
SFTP でホストされているMS Access database ファイルへの接続および認証について詳しくは、SFTP への接続 を参照してください。
SharePoint Online
SharePoint Online に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:SharePoint REST またはSharePoint SOAP に設定。
- DataSource:the path of a document library, and the name of a MS Access database files に設定。次に例を示します。
- SharePoint Online REST:sprest://remotePath/MyDatabase.accdb
- SharePoint Online SOAP:sp://remotePath/MyDatabase.accdb
リモートパスにはSharepoint URL を使用します。表示名ではありません。
ファイルがルートレベルでないSharePoint Online サイト(例えば、/sites/<your site>/ 下)に格納されている場合は、StorageBaseURL プロパティをSharePoint サイトのフルパスに設定してください。
- トップレベルのドキュメントライブラリのファイルにアクセスするには:
- DataSource:sprest://Documents/ に設定。
- StorageBaseURL:https://<your domain>.sharepoint.com/sites/<your site>/ に設定。
- サイト内のサブフォルダにアクセスするには:
- DataSource:sprest://Documents/<subfolder>/ に設定。
- StorageBaseURL:https://<your domain>.sharepoint.com/sites/<your site>/ に設定。
完全なSharePoint サイトURL を使用することで、本製品 は、組織のSharePoint Online 環境内の非ルートレベルの場所に格納されているファイルを適切に検索できます。
SharePoint Online でホストされているMS Access database ファイルへの接続および認証について詳しくは、SharePoint Online への接続 を参照してください。
SharePoint On Premise
SharePoint On Premise に格納されているMicrosoft Access リソースを識別するために以下を設定します。
- ConnectionType:SharePoint REST またはSharePoint SOAP に設定。
- DataSource:the path of a document library, and the name of a MS Access database files に設定。次に例を示します。
- SharePoint On Premise REST: sprest://remotePath/MyDatabase.accdb
- SharePoint On Premise SOAP: sp://remotePath/MyDatabase.accdb
リモートパスにはSharepoint URL を使用します。表示名ではありません。
SharePoint On Premise でホストされているMS Access database ファイルへの接続および認証について詳しくは、SharePoint On Premise への接続 を参照してください。
セキュアなMicrosoft Access への接続
デフォルトでは、本製品 はサーバーの証明書をシステムの信頼できる証明書ストアと照合してSSL/TLS のネゴシエーションを試みます。別の証明書を指定するには、利用可能なフォーマットについてSSLServerCert プロパティを参照してください。
接続オブジェクトの作成
Connect-Access cmdlet を使って、別のcmdlet に渡すことができる接続オブジェクトを作成します。
$conn = Connect-Access -DataSource 'C:\my.accdb'
データの取得
接続の作成が完了したら、リレーショナルデータベースに対して通常行える操作を
別のcmdlet を使って実行できます。 Select-Access cmdlet はデータを取得するためのネイティブなPowerShell インターフェースを提供します。
$results = Select-Access -Connection $conn -Table "Orders" -Columns @("ShipName, ShipCity") -Where "ShipCountry='USA'"
Invoke-Access cmdlet はSQL インターフェースを提供します。このcmdlet を使うと、Query パラメータを介してSQL クエリを実行できます。
cmdlet 出力のパイプ処理
cmdlet は行オブジェクトをパイプラインに一度に一行ずつ返します。以下は、結果をCSV ファイルにエクスポートします。
Select-Access -Connection $conn -Table Orders -Where "ShipCountry = 'USA'" | Select -Property * -ExcludeProperty Connection,Table,Columns | Export-Csv -Path c:\myOrdersData.csv -NoTypeInformation
Select-Access からの結果をSelect-Object cmdlet にパイプして、Export-CSV cmdlet にパイプする前にいくつかのプロパティを実行していることがわかるでしょう。これをする理由は、CData Cmdlets は接続、テーブル、およびカラムの情報を結果セットの各行オブジェクトに追加しますが、必ずしもその情報がCSV ファイルに必要ではないからです。
ただし、これによってcmdlet の出力を別のcmdlet にパイプすることが容易になります。以下に、結果セットをJSON に変換する例を示します。
PS C:\> $conn = Connect-Access -DataSource 'C:\my.accdb'
PS C:\> $row = Select-Access -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-Access -Connection $conn -Table Orders -Where "ShipCountry = 'USA'" | Remove-Access
データの変更
cmdlet はデータクレンジング同様、データの変換を容易にします。次の例は、レコードがすでに存在するかどうか、挿入する前に更新が必要かどうかをチェックしてから、CSV ファイルのデータをMicrosoft Access にロードします。
Import-Csv -Path C:\MyOrdersUpdates.csv | %{
$record = Select-Access -Connection $conn -Table Orders -Where ("Id = `'"+$_.Id+"`'")
if($record){
Update-Access -Connection $conn -Table Orders -Columns @("ShipName","ShipCity") -Values @($_.ShipName, $_.ShipCity) -Where "Id = `'$_.Id`'"
}else{
Add-Access -Connection $conn -Table Orders -Columns @("ShipName","ShipCity") -Values @($_.ShipName, $_.ShipCity)
}
}