はじめに
VB.NETやC#などの言語では、データベースへアクセスするための手段が標準で備わっています。Windows PowerShellでも.NET Frameworkのクラスを利用することでデータベースへアクセスすることが可能です。
今回は、PowerShellからOracleデータベースへ接続し、データを取得する方法について説明します。
対象読者
- Windows PowerShellの基本操作が行える方。
- Oracleについて基本知識を有する方。
- 簡単なSQL文が書ける方
アセンブリをロードする
PowerShellからOracleデータベースを操作するには、事前にアセンブリをロードする必要があります。今回は.NET FrameworkのOracleClient
名前空間にあるクラスを使用します。
OracleClient
のアセンブリをロードするには次のように記述します。
PS> [void][reflection.assembly]::LoadWithPartialName("System.Data.OracleClient")
先頭に[void]
を付けているのは、読み込んだときにアセンブリの情報が表示されないようにするためです。
OracleConnectionオブジェクトの作成
Oracleに接続するには、OracleConnection
クラスを使用します。OracleConnection
オブジェクトの作成には接続文字列が必要となります。
接続文字列の基本構文は
Data Source=接続先;User ID=ユーザーID;Password=パスワード;Integrated Security=false;
です。太字で示した箇所を実際の接続先に合わせて変更します。接続文字列の最後のIntegreated Security
ですが、"User ID" および "Password" を接続文字列中に指定する場合はfalseを、現在の Windows アカウントの資格情報を認証に使用する場合にはtrueとします。
今回は「User ID」および「Password」にはOracleのサンプルであるSCOTT/TIGERを指定し、Integrated Security
はfalseとします。このようにして作成した接続文字列を変数に代入します。
PS> $ConnectionString = "Data Source=MyServer;User ID=SCOTT;Password=TIGER;Integrated Security=false;"
次に、作成した接続文字列を使用して、OracleConnection
オブジェクトを作成します。
PS> $OraConn = New-Object System.Data.OracleClient.OracleConnection($ConnectionString)
データセットの作成
OracleConnection
が作成できたら、データを取得します。今回はデータの取得にデータアダプタを使用します。この他、データの取得方法には、データリーダーを使用する方法があります。
データアダプタを使用するとデータセットやデータテーブルにデータを格納することができます。データセットやデータテーブルはアプリケーションで使用するデータをメモリ上に格納できる入れ物(オブジェクト)です。取得したデータはメモリ上に格納されるため、アプリケーションがデータベースから切断しても使用することができます。
まずはデータセットの構成について見てみましょう。
データセットは様々なテーブルから取得したデータを格納できるよう、データテーブルと呼ばれるテーブルを複数格納することができます。また、データテーブルはレコードを表す複数のDataRow
から、DataRow
はフィールドを表すDataColumn
から構成されます。(図1)
このようにしてみるとデータセットが実際のデータベースの構造を表せるオブジェクトであることが分かります。
実際にPowerShellでデータセットを作成する場合に次のように記述します。
PS> $dtSet = New-Object System.Data.DataSet