首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较Invoke-Sqlcmd的结果?

如何比较Invoke-Sqlcmd的结果?
EN

Stack Overflow用户
提问于 2019-09-06 02:46:56
回答 1查看 95关注 0票数 4

目标是比较数据库查询结果。但是,在Invoke-Sqlcmd的结果上使用Compare-Object并不表示不同事物的粒度级别。我怎么才能做到这一点?我必须手动逐个字段进行比较吗?

代码语言:javascript
复制
InputObject         SideIndicator
-----------         -------------
System.Data.DataRow <=
System.Data.DataRow <=
System.Data.DataRow <=
...

结果是由以下代码生成的。

代码语言:javascript
复制
$query = @"
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '$TableName'
AND TABLE_SCHEMA = '$Schema'
"@
$t1 = Invoke-Sqlcmd -ServerInstance $SqlInstance -Database $Database -Query $query

$query2 = @"
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '$TableName2'
AND TABLE_SCHEMA = '$Schema2'
"@
$t2 = Invoke-Sqlcmd -ServerInstance $SqlInstance2 -Database $Database2 -Query $query2

$t1.GetType()
$t1[0].GetType()
$t1[0] | fl * -Force
$t2[0] | fl * -Force
Write-Information -MessageData "comparing both query results"
Compare-Object -ReferenceObject $t1 -DifferenceObject $t2

Write-Information -MessageData "comparing first elements of the array"
Compare-Object -ReferenceObject $t1[0] -DifferenceObject $t2[0]

Write-Information -MessageData "comparing first element members"
Compare-Object -ReferenceObject ($t1[0]).COLUMN_NAME -DifferenceObject ($t2[0]).COLUMN_NAME
$query = @"
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '$TableName'
AND TABLE_SCHEMA = '$Schema'
"@
$t1 = Invoke-Sqlcmd -ServerInstance $SqlInstance -Database $Database -Query $query

$query2 = @"
SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '$TableName2'
AND TABLE_SCHEMA = '$Schema2'
"@
$t2 = Invoke-Sqlcmd -ServerInstance $SqlInstance2 -Database $Database2 -Query $query2

$t1.GetType()
$t1[0].GetType()
$t1[0] | fl * -Force
$t2[0] | fl * -Force
Write-Information -MessageData "comparing both query results"
Compare-Object -ReferenceObject $t1 -DifferenceObject $t2

Write-Information -MessageData "comparing first elements of the array"
Compare-Object -ReferenceObject $t1[0] -DifferenceObject $t2[0]

Write-Information -MessageData "comparing first element members"
Compare-Object -ReferenceObject ($t1[0]).COLUMN_NAME -DifferenceObject ($t2[0]).COLUMN_NAME
EN

回答 1

Stack Overflow用户

发布于 2020-04-28 06:51:18

代码语言:javascript
复制
Compare-Object ($t1 | ConvertTo-CSV) ($t2 | ConvertTo-CSV) | Format-List

如果生成的CSV不是太宽而无法显示在屏幕上,请移除| Format-List

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

https://stackoverflow.com/questions/57811407

复制
相关文章

相似问题

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