Powershell 连接MySQL
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