首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将MySQL查询结果显示为XML

问将MySQL查询结果显示为XML
EN

Stack Overflow用户
提问于 2017-02-18 03:16:55
回答 2查看 214关注 0票数 0

我需要创建一个连接到MySQL实例的PowerShell脚本,运行查询并将结果解析为XML。我从这里开始:

代码语言:javascript
复制
Param(
  [Parameter(
  Mandatory = $true,
  ParameterSetName = '',
  ValueFromPipeline = $true)]
  [string]$Query
)

$MySQLAdminUserName = 'adminuser'
$MySQLAdminPassword = 'password'
$MySQLDatabase = 'mysql'
$MySQLHost = '192.168.10.126'
$ConnectionString = "server=" + $MySQLHost + ";port=3306;uid=" + $MySQLAdminUserName + ";pwd=" + $MySQLAdminPassword + ";database="+$MySQLDatabase

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] 
} catch {
  Write-Host "ERROR : Unable to run query : $query `n$Error[0]"
} finally {
  $Connection.Close()
}

脚本返回表,但是我无论如何都不能将结果格式化为XML。你能帮我一下吗?我打算运行的所有查询都将显示2列。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-19 05:20:53

对于某些东西来说,这种简单的、成熟的XML构造可能有些过分了。您可以简单地将表值插入到字符串模板中,如下所示:

代码语言:javascript
复制
$results = $DataSet.Tables[0] | ForEach-Object {
  '<result><channel>{0}</channel><value>{1}</value></result>' -f $_.col1, $_.col2
}

$prtg = "<prtg>{0}</prtg>" -f (-join $results)

将col1和col2替换为实际的字段名称。

票数 0
EN

Stack Overflow用户

发布于 2017-02-18 17:34:12

试试这样的东西

代码语言:javascript
复制
$DataSet.Tables[0].WriteXML('c:\temp\result.xml')

或者这个

代码语言:javascript
复制
[xml] $xml=$DataSet.Tables[0] | ConvertTo-XML -NoTypeInformation 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42305778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档