mysql - 查询 MySQL 数据库

标签 mysql powershell

$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/

相关文章:

.net - PowerShell 解析 .NET 选项卡完成方法和属性

mysql - 如何使用 Poco MySQL 连接器选择数据库

mysql - 如何将 SQL 查询中的返回值从西里尔文转换为拉丁文

php - 投票限制

powershell - 安装 posh-git 时遇到问题

forms - Powershell:从后台作业结果更新 GUI

PHP & MySQL : Insert records in two different tables

mysql - 不使用 join 和 union 从多个表中选择

powershell - 根据某些文件名模式对文件进行排序并将其移动到目录中

powershell - "get-wmiobject win32_process -computername"得到错误 "Access denied , code 0x80070005"