首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PowerShell,格式化来自SQL的大型XML结果

PowerShell,格式化来自SQL的大型XML结果
EN

Stack Overflow用户
提问于 2013-02-25 22:42:55
回答 2查看 1.2K关注 0票数 0

我有一个用SQL执行存储过程的powershell脚本,它返回一个大型的、单一的XML结果。我需要将这个XML结果保存到一个文件中。

不幸的是,PowerShell试图使输出看起来更漂亮,从而破坏了输出。

代码语言:javascript
复制
 $xmldataset.tables[0] | ft -wrap -hidetableheaders | out-file C:\xml_result.xml

这将使我获得完整的结果,但它将结果包装在它将其显示在屏幕上的位置。这将破坏大多数XML解析器。

代码语言:javascript
复制
$xmldataset.tables[0] | ft -hidetableheaders | out-file C:\xml_result.xml

这只是随意地将我的结果分成两行,截断每一行。

除非我使用-wrap,否则它会将结果放入两行,即使这只是从SQL返回的一行。

下面是完整的代码

代码语言:javascript
复制
$SqlCmd.CommandText = "exec dbo.sp_getXML"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SqlServer; Database = $SqlCatalog; Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$xmlDataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($xmlDataSet)

如何才能将SQL的输出保存到一个文件中,最好也保存SQL结果创建的换行符。

EN

回答 2

Stack Overflow用户

发布于 2013-02-25 23:03:38

您可以像这样剥离格式:

代码语言:javascript
复制
$xmldataset.tables[0] | ft -wrap -hidetableheaders | out-string | out-file C:\xml_result.xml
票数 0
EN

Stack Overflow用户

发布于 2013-02-26 02:30:31

这就是最终对我最有效的方法。

代码语言:javascript
复制
$xml = ""
for ($i=0; $i -lt $xmldataset.tables[0].rows.count; $i++){
    $xml = $xml+$xmldataset.tables[0].rows[$i][0].ToString()
}
$xml | out-file -filepath C:\Users\mvrydaghs\Documents\test_copy\xml_result.xml

因为它随机地将结果分成多行,所以我需要循环。在循环中直接写入文件仍然引入了不需要的和未被要求的换行符,所以我必须使用一个额外的变量进行连接,然后将其写入文件。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15069553

复制
相关文章

相似问题

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