2017/01/29

[PowerShell] Access データベースを ADO で読み込む


PowerShell を使って Access のデータベースにアクセスするには、実行環境や接続文字列に注意点があります。この点の詳しい内容は以下の記事を参照してください。

では、Access データベースに、既存の技術である ADO を用いてテーブルのデータを読み込むサンプルを提示します。

詳細はコメントを付けてあるので分かると思いますが、スクリプトと同じディレクトリにある Access のデータベースファイル (test.mdb or test.accdb) にアクセスし、以下のテーブルを読み込み内容を画面に出力します。

  • テーブル名:tblUsers
  • フィールド情報
    • USER_ID (varchar (255))
    • USER_NAME (varchar (255))

サンプルスクリプトは以下のようになります。

#
#  PowerShell から ADO でレコードを読み込む
#


# 変数の宣言
$adOpenStatic = 3  
$adLockOptimistic = 3  
$con = New-Object -ComObject ADODB.Connection
$rs = New-Object -ComObject ADODB.Recordset

# スクリプトのカレントディレクトリを取得
$path = Split-Path $MyInvocation.MyCommand.Path -Parent

# スクリプトのカレントディレクトリのデータベースパスを作成
$path = Join-Path $path "test.mdb"  # test.accdb も可



# 拡張子によって接続文字列を切り替える

# MDB 形式の場合
if (([System.IO.Path]::GetExtension($path)) -eq ".mdb") {
  $connectionString = "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = $path"

# ACCDB 形式の場合
} elseif(([System.IO.Path]::GetExtension($path)) -eq ".accdb") {
  $connectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source = $path"

# 上記以外は例外をスロー
} else {
  throw New-Object System.Exception("Access 拡張子エラー")
}

# 接続をオープン
$con.Open($connectionString)

# レコードセットをオープン
$rs.Open("SELECT * FROM tblUsers", $con, $adOpenStatic, $adLockOptimistic) 

# 先頭行に移動
$rs.MoveFirst()

# レコードセットの最後までループ
While ($rs.EOF -eq $false) {
   # フィールドの値を連結して出力
   Write-Host $rs.Fields.Item("USER_ID").Value : $rs.Fields.Item("USER_NAME").Value 
   
   # 次のレコードに移動する
   $rs.MoveNext()
}

# レコードセットを閉じる
$rs.Close()


# 接続を閉じる
$con.Close()

# COM オブジェクトをリリース(Excelと違ってなくても問題ないけど一応)
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($rs)
[void][System.Runtime.InteropServices.Marshal]::ReleaseComObject($con)

スポンサーリンク


このエントリーをはてなブックマークに追加




Twitter ではブログにはない、いろんな情報を発信しています。


コメント

コメントを書く



プロフィール

  • 名前:fnya
    経歴:
    SE としての経験は15年以上。様々な言語と環境で業務系システム開発を行い、セキュリティ対策などもしていました。現在は趣味SE。

    Twitter では、ブログでは取り上げない情報も公開しています。


    ブログについて

    このブログは、IT、スマートフォン、タブレット、システム開発などに関するさまざまな話題を取り上げたり、雑感などをつづっています。

    >>ブログ詳細
    >>自作ツール
    >>運営サイト
    >>Windows 10 まとめ

    Twitter のフォローはこちらから Facebook ページはこちら Google+ページはこちら RSSフィードのご登録はこちらから