2016-03-28 206 views
0
$Query1 = "INSERT INTO answers (gid,Key1,key2,key3,key4,key5) VALUES ($gid,'$key1','$key2','$key3','$key4','$key5');" 

function Invoke-MySql { 
    param($Query) 

    $MySQLAdminUserName = 'root' 
    $MySQLAdminPassword = <password> 
    $MySQLDatabase = <username> 
    $MySQLHost = 'localhost' 
    $ConnectionString = "server=" + $MySQLHost + ";port=3306;uid=" + 
         $MySQLAdminUserName + ";pwd=" + $MySQLAdminPassword + 
         ";database=" + $MySQLDatabase 
    Write-Log "Trying to connect MySql" 0 

    try { 
    [void][System.Reflection.Assembly]::LoadWithPartialName("MySql.Data") 
    $Connection = New-Object MySql.Data.MySqlClient.MySqlConnection 
    $Connection.ConnectionString = $ConnectionString 
    $Connection.Open() 


    $Command = New-Object MySql.Data.MySqlClient.MySqlCommand($Query, $Connection) 
    $DataAdapter = New-Object MySql.Data.MySqlClient.MySqlDataAdapter($Command) 
    $DataSet = New-Object System.Data.DataSet 
    $RecordCount = $dataAdapter.Fill($dataSet, "data") 
    $DataSet.Tables[0] | ft -AutoSize 
    Write-Log "Querying the table with following query: $Query" 0 
    } catch { 
    Write-Log "ERROR : Unable to run query : $query `n$Error[0]" 2 
    } finally { 
    $Connection.Close() 
    Write-Log "MySql connection closed" 0 
    } 
} 

$Result1 = Invoke-MySql -Query $Query1 

OUTPUT:查询MySQL数据库

PS D:\MYSQL> D:\MYSQL\MySql_Insert&Query.ps1 

    gid key1  key2 key3 key4 key5 
    --- ----  ---- ---- ---- ---- 
31657 c1  c2  c3  c4 c5 
31667 b1  b2  b3  b4 b5 
112322 aa  bb  cc  dd ee 
212322 aa  bb  cc  dd ee 
212982 aa  bb  cc  dd ee 
215982 aa  bb  cc  dd ee 
215987 aa  bb  cc  dd ee 
315987 aa  bb  cc  dd ee

所以这是输出。我已经从MySQL获取了结果,但是现在我想过滤结果,比如我只想获取一个值,例如gid = 2122322的key3。

+0

你是说你想过滤$ Result1变量吗?你可以做一个'$ Result1 | Where-Object {$ _。gid -eq'2122322'}',或者编写一个新的查询来做类似条件的选择。 – Taylor

回答

1

你的功能,而不是返回格式化输出表本身的:

$DataSet.Tables[0] | ft -AutoSize 

取出| ft -AutoSize,你就可以用实际的表数据的工作:

$Result1 = Invoke-MySql -Query $Query1 | 
      Where-Object { $_.gid -eq 2122322 } | 
      Select-Object -Expand key3 

Format-*小命令用于将数据呈现给用户时用于格式化数据。 千万不要在应该进行进一步处理的数据上使用它们(基本上,从不在函数内部使用它们)。