各製品の資料を入手。
詳細はこちら →こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData ODBC Driver for Excel は、Microsoft のビルトインODBC サポートを使用して、追加設定なしで連携を可能にします。ODBC ドライバーは、PowerShell から実際のExcel のデータへの連携を即座に実現します。
PowerShell に組み込まれている.NET Framework Provider for ODBC を使用して、Excel を他のデータベースに複製するなどの統合タスクを素早く自動化できます。この記事では、Excel をSQL Server に5 行のコードで複製する方法を説明します。
PowerShell コードを記述し、create、read、update、delete (CRUD) 操作を実行することも可能です。以下の例を参照してください。
CData ODBC ドライバは、以下のような特徴を持ったリアルタイムデータ連携ソリューションです。
CData ODBC ドライバでは、1.データソースとしてExcel の接続を設定、2.PowerShell 側でODBC Driver との接続を設定、という2つのステップだけでデータソースに接続できます。以下に具体的な設定手順を説明します。
まずは、本記事右側のサイドバーからExcel ODBC Driver の無償トライアルをダウンロード・インストールしてください。30日間無償で、製品版の全機能が使用できます。
未指定の場合は、初めにODBC DSN(data source name)で接続プロパティを指定します。ドライバーのインストールの最後にアドミニストレーターが開きます。Microsoft ODBC Data Source Administrator を使用して、ODBC DSN を作成および構成できます。
Authentication セクションのExcelFile には有効なExcel ファイルを設定する必要があります。
URI をバケット内のExcel ファイルに設定します。さらに、次のプロパティを設定して認証します。
URI をExcel ファイルへのパスに設定します。Box へ認証するには、OAuth 認証標準を使います。 認証方法については、Box への接続 を参照してください。
URI をExcel ファイルへのパスに設定します。Dropbox へ認証するには、OAuth 認証標準を使います。 認証方法については、Dropbox への接続 を参照してください。ユーザーアカウントまたはサービスアカウントで認証できます。ユーザーアカウントフローでは、以下の接続文字列で示すように、ユーザー資格情報の接続プロパティを設定する必要はありません。
URI をExcel ファイルを含むドキュメントライブラリに設定します。認証するには、User、Password、およびStorageBaseURL を設定します。
URI をExcel ファイルを含むドキュメントライブラリに設定します。StorageBaseURL は任意です。指定しない場合、ドライバーはルートドライブで動作します。 認証するには、OAuth 認証標準を使用します。
URI をExcel ファイルへのパスが付いたサーバーのアドレスに設定します。認証するには、User およびPassword を設定します。
デスクトップアプリケーションからのGoogle への認証には、InitiateOAuth をGETANDREFRESH に設定して、接続してください。詳細はドキュメントの「Google Drive への接続」を参照してください。
以下のコードは、DSN を使用してPowerShell でデータソースへの接続を初期化する方法を説明します。
$conn = New-Object System.Data.Odbc.OdbcConnection
$conn.ConnectionString = "DSN=CData Excel Source x64"
キャッシュを有効にした後、以下のコードを使用して、データをSQL Server に複製できます。
次の接続プロパティを設定し、キャッシュデータベースを構成します。
CacheProvider:ADO.NET プロバイダの名前です。これは、ご使用のバージョンの.NET のMachine.config にあります。例として、SQL Server を構成するにはSystem.Data.SqlClient と入力します。
CacheConnection:データベースの接続に必要なプロパティの接続文字列です。以下はSQL Server の一例です。
Server=localhost;Database=RSB;User Id=sqltest;Password=sqltest;
この例のSQL クエリを使用して、スキーマを含むキャッシュされたテーブル全体を更新できます。既存のキャッシュはすべて削除されます。
$conn.Open()
# Create and execute the SQL Query
$SQL = "CACHE DROP EXISTING SELECT * FROM " + $Sheet
$cmd = New-Object System.Data.Odbc.OdbcCommand($sql,$conn)
$count = $cmd.ExecuteNonQuery()
$conn.Close()
ドライバーを使用すると、キャッシュ機能を完全に制御できます。その他のキャッシュコマンドと使用例については、ヘルプドキュメントを参照してください。他のデータベースに複製する手順についても、ヘルプドキュメントを参照してください。
PowerShell でExcel を取得するには、OdbcDataAdapter メソッドのFill メソッドを呼び出します。データ操作コマンドを実行するには、OdbcCommand オブジェクトを初期化してからExecuteNonQuery を呼び出します。以下は、.NET Framework Provider for ODBC を介した、Excel へのCRUD コマンドの例です。
$sql="SELECT Name, Revenue from Sheet"
$da= New-Object System.Data.Odbc.OdbcDataAdapter($sql, $conn)
$dt= New-Object System.Data.DataTable
$da.Fill($dt)
$dt.Rows | foreach {
$dt.Columns | foreach ($col in dt{
Write-Host $1[$_]
}
}
$cmd = New-Object System.Data.Odbc.OdbcCommand("UPDATE Sheet SET Name='Bob' WHERE Id = @myId", $conn)
$cmd.Parameters.Add(new System.Data.Odbc.OdbcParameter("myId","001d000000YBRseAAH")
$cmd.ExecuteNonQuery()
$cmd = New-Object System.Data.Odbc.OdbcCommand("INSERT INTO Sheet SET Name='Bob' WHERE Id = @myId", $conn)
$cmd.Parameters.Add(new System.Data.Odbc.OdbcParameter("myId","001d000000YBRseAAH")
$cmd.ExecuteNonQuery()
$cmd = New-Object System.Data.Odbc.OdbcCommand("DELETE FROM Sheet WHERE Id = @myid", $conn)
$cmd.Parameters.Add(new System.Data.Odbc.OdbcParameter("myId","001d000000YBRseAAH")
$cmd.ExecuteNonQuery()
このようにCData ODBC ドライバと併用することで、270を超えるSaaS、NoSQL データをコーディングなしで扱うことができます。30日の無償評価版が利用できますので、ぜひ自社で使っているクラウドサービスやNoSQL と合わせて活用してみてください。
CData ODBC ドライバは日本のユーザー向けに、UI の日本語化、ドキュメントの日本語化、日本語でのテクニカルサポートを提供しています。