gpt4 book ai didi

sql - PowerShell 函数将多个 SQL 查询输出为 CSV

转载 作者:行者123 更新时间:2023-12-01 08:14:02 25 4
gpt4 key购买 nike

我在让 PowerShell 运行多个 SQL 查询并将结果导出为 CSV 时遇到问题。

我正在尝试使用 Function 来完成此操作但问题出现在Process当我希望运行两个查询并输出两个 CSV 文件时阻止。

我尝试创建一个函数来运行查询和第二个函数来创建 CSV 文件,但它甚至没有运行 SQL 查询。我这样做是在没有安装 SQL 的情况下执行这个 powershell 脚本的。 -谢谢!

Function Run-Query {
param([string[]]$queries,[string[]]$sheetnames)
Begin{
$SQLServer = 'ServerName'
$Database = 'DataBase'
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $Database; Integrated Security = True"
}#End Begin
Process{
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $queries
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)
$DataSet.Tables[0] | Export-Csv -NoTypeInformation -Path "C:\Scripts\$sheetnames.csv"
}#End Process
End{
$SqlConnection.Close()
}
}#End function run-query.
$queries = @()
$queries += @'
Select * from something
'@
$queries += @'
Select * from something2
'@
$sheetnames = @()
$sheetnames += 'Cert'
$sheetnames += 'Prod'
Run-Query -queries $queries

最佳答案

我不确定 SQL 是否分别处理多个查询,所以当您可能传递两个不同的查询时,SQL 服务器可能会将它们解释为一个查询(不是 100% 确定这正在发生,只是猜测)

您已将查询放在一个数组中,因此我们可以轻松地遍历该数组,单独运行每个查询并将结果放入 CSV 中。

以下是我如何修改您的代码以开始:

Function Run-Query
{
param([string[]]$queries,[string[]]$sheetnames)
Begin
{
$SQLServer = 'ServerName'
$Database = 'DataBase'
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Server = $SQLServer; Database = $Database; Integrated Security = True"
}#End Begin
Process
{
# Loop through each query
For($i = 0; $i -lt $queries.count; $i++)
{
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand

# Use the current index ($i) to get the query
$SqlCmd.CommandText = $queries[$i]

$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$SqlAdapter.Fill($DataSet)

# Use the current index ($i) to get the sheetname for the CSV
$DataSet.Tables[0] | Export-Csv -NoTypeInformation -Path "C:\Scripts\$($sheetnames[$i]).csv"
}
}#End Process
End
{
$SqlConnection.Close()
}
}#End function run-query.

$queries = @()

$queries += @'
Select * from something
'@
$queries += @'
Select * from something2
'@

$sheetnames = @()
$sheetnames += 'Cert'
$sheetnames += 'Prod'

Run-Query -queries $queries -sheetnames $sheetnames

关于sql - PowerShell 函数将多个 SQL 查询输出为 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28846300/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com