2016-03-28 8 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 DB

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のように、1つの値だけをフェッチするような結果をフィルタリングしたいと思います。

$DataSet.Tables[0] | ft -AutoSize 

| ft -AutoSizeを削除して、あなたは、実際のテーブルのデータを操作できるようになります:

+0

あなたは$ Result1変数をフィルタリングしたいと言っていますか?あなたは '$ Result1 | Where-Object {$ _。gid -eq '2122322'} 'と同様の条件でselectを実行するための新しいクエリを記述します。 – Taylor

答えて

1

あなたの関数は、テーブル自体の代わりにフォーマットされた出力を返して

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

Format-*コマンドレットがありますデータがユーザーに提示されたときにデータをフォーマットします。 決しては、さらなる処理(基本的に、それらを関数内で使用しないでください)の対象となるデータに使用します。