Powershell連接SQL Server一般都是直接使用Invoke-sqlcmd,這個很方便,但是有時候還是會需要連接到其他數據庫,像MySQL。
這里是對Powershell連接MySQL研究的一個總結:
連接MySQL是通過.net框架的,所以必須先安裝 MySQL .Net Connector (http://dev.mysql.com/downloads/connector/net/)
如果不想安裝MySQL .Net connector 也可以直接在其他已安裝的機器上拷貝MySql.Data.dll 到需要使用的機器上。
連接方式:
如果是安裝了MySQL .Net Connector
[void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data")
如果是直接通過MySQL.Data.dll文件
$mySQLDataDLL = "C:\scripts\mysql\MySQL.Data.dll" [void][system.reflection.Assembly]::LoadFrom($mySQLDataDLL)
讀取DLL后我們便可以進行處理:
$connectionStr = "Server=192.168.1.1;Uid=user;Pwd=user123;database=mydb;" $querysql = "select msg from messages limit 1;" $connection = New-Object MySql.Data.MySqlClient.MySqlConnection $connection.ConnectionString = $connectionStr $connection.Open() $command = New-Object MySql.Data.MySqlClient.MySqlCommand($querysql, $connection) $dataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($command) $dataSet = New-Object System.Data.DataSet $recordCount = $dataAdapter.Fill($dataSet) $dataSet.Tables[0]
到這里我們會獲得一個System.Data.DataSet對象,我們通過Tables[0]返回第0個表集,這已經可以返回我們需要的數據集了,但是如果我們要進一步的處理行集的話:
$table = $dataSet.Tables[0] foreach($row in $table.Rows) { $row.msg }
如果你想知道這個table中有多少列可以使用下面的方法:
$table.columns | Format-Table