【问题标题】:Powershell Invoke-Sqlcmd and multiple select statements within the inputPowershell Invoke-Sqlcmd 和输入中的多个选择语句
【发布时间】:2015-12-30 00:37:22
【问题描述】:

我面临的问题在于使用下面的 invoke-sqlcmd 命令

$result = Invoke-Sqlcmd -InputFile $sqlfile -ServerInstance $DB 

$sqlfile 中的示例 sql 是:

SELECT TOP 2 FROM [TABLE1]
SELECT TOP 3 FROM [TABLE2]

我所追求的输出类型将是一个结果,两个表一个接一个。

例如..

TABLE1
data1
data2
TABLE2
data1
data2
data3

这可能吗?

我曾尝试使用 Invoke-Sqlcmd2 进行相同的操作,认为 PSCustomObject 数据类型会更容易使用..

$result = Invoke-Sqlcmd2 -InputFile $sqlfile-ServerInstance $DB -As PSObject

但是这似乎只处理第一个选择查询并忽略第二个。

【问题讨论】:

    标签: sql powershell invoke-sqlcmd


    【解决方案1】:

    您是否考虑过在 SQL 文件中进行交叉连接? 考虑以下来自:here

    你会做这样的事情:

    SELECT * FROM Table1
    CROSS JOIN Table2
    

    这将为您提供两个表之间关联的所有数据无论是否存在关系。如果你想通过关系连接,检查一些其他的 SQL 连接,例如 LEFT JOIN、INNER JOIN 等

    【讨论】:

    • 如果要添加特定列,只需将 * 替换为列名,例如 col1、col2 .. 等
    • 抱歉,我应该更具体地使用 SQL。一个真实的例子说明这将如何工作并不会真正适用于任何连接。例如,select transtime, amount, accountid from #mytable1select count(accountid),sum(amount) from #mytable1 不幸的是,总和数据不会真正起作用。在这种情况下,两个输出的目的是 1.) 显示临时表 #mytable1 中的一些数据 2.) 显示 accountid 列的计数和 amount 列的摘要。不过您是对的,该解决方案在其他情况下也可以使用
    • 啊,好吧,在这种情况下,如果它们适合您的情况,可能值得研究存储过程,只要将它们与我不太熟悉的 Powershell 连接起来,this 可能会有所帮助对于一些 SQL
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 2015-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-17
    • 2018-07-15
    相关资源
    最近更新 更多