write ahead log

ロールフォワード用

Powershellでmdbファイルを開いてテーブルの一覧を得る

2020年にもなってMDBファイルを触ることになるとは思わなかった.

PowerShellは便利だ.

使うときにはこの辺のコンポーネントが必要だと思う.

Microsoft Access Database Engine 2016 Redistributable

#######################################################################
# 概要
#   mdbファイルを開いてテーブルの一覧を出力する
# 書式
#   table-list.ps1 [mdbファイルへの相対パス] [mdbファイルパスワード]
#######################################################################

Param($filename, $password)

# MDBファイルのファイルパスを組み立てる
$filepath = join-path $PSScriptRoot $filename

$connection_string = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source = ${filepath};"

# パスワード指定の場合にはパスワードをConnectionStringへ加える
if($password -ne '') {
    $connection_string += "Jet OLEDB:Database Password = ${password};"
}

$catalog = New-Object -ComObject "ADOX.Catalog"
$conn = New-Object -ComObject "ADODB.Connection"

$conn.Open($connection_string)
$catalog.ActiveConnection = $conn

foreach($tbl in $catalog.Tables) {
    #Write-Output $tbl
    #テーブル名だけほしい時はこっち
    Write-Output $tbl.name
}

$conn.Close()