Connector/NetとPowerShellでMySQLのデータ取得

ありそでなさそな内容だったのでメモ。

Connector/Netを使うとC#からMySQLのデータを扱えますが、これ自体は.Net providerなので、.Net Frameworkが扱えるところから利用することができます。今回はWindowsで利用できるPowerShellから扱ってみます。以下の環境で試してみます。

PowerShell: 1.0
Connector/Net: 6.0.4

まずアセンブリをロードします。

PS C:¥> [reflection.assembly]::LoadWithPartialName("MySQL.Data")

GAC Version Location
--- ------- --------
True v2.0.50727 C:¥WINDOWS¥assembly¥GAC_MSIL¥MySQL.Data¥6.0.4.0__c5687fc88969c44d¥MySQL.Data.dll

接続文字列を準備して、接続します。

PS C:¥> $connStr = "server=127.0.0.1;port=3306;uid=root;database=test;Pooling=False"
PS C:¥> $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr)

SQL文を用意して、データアダプタを用意します。ここでは"SHOW TABLES"をSQL文の代わりに使ってみました。

PS C:¥> $cmd = New-Object MySql.Data.MySqlClient.MySqlCommand("SHOW TABLES", $conn)
PS C:¥> $da = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($cmd)

データセットを作成して、データアダプタの内容を反映します。

PS C:¥> $ds = New-Object System.Data.DataSet
PS C:¥> [void]$da.Fill($ds)

最後に内容を表示します。データセットは新規に作成したので、$ds.Tables[0]で一つ目のテーブルを確認できます。
その内容をcmdletであるFormat-Tableで表形式にして表示しています。

PS C:¥> $result = $ds.Tables[0]
PS C:¥> $result | Format-Table

これはなかなか便利ですね。