$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
输出:
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。
最佳答案
您的函数返回格式化输出而不是表本身:
$DataSet.Tables[0] | ft -AutoSize
删除| ft -AutoSize
,您将能够使用实际的表数据:
$Result1 = Invoke-MySql -Query $Query1 |
Where-Object { $_.gid -eq 2122322 } |
Select-Object -Expand key3
Format-*
cmdlet 用于在向用户呈现数据时格式化数据。 永远不要在需要进一步处理的数据上使用它们(基本上,永远不要在函数中使用它们)。
关于mysql - 查询 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36260409/