我有一个查询,根据提供的Id编号编译一些数据。我想为我拥有的一长串ID运行一次,并将结果集保存为CSV。我知道我可以手动完成,但我正在寻找一种自动化方式。
我已经尝试运行我的查询而没有在where子句中指定Id。这最终给我的文件略小于1Gb,这对于需求来说太大了。
以下是我要完成的基本想法:
Declare @num int
set @num = 0
While @num < 100
Begin
--I'm trying to figure out a way to store the
--result set generateed by this procedure is saved to 'DataExtract' + @num + '.csv'
Exec LongRunningProcedure @num
Set @num = @num + 1
End
答案 0 :(得分:0)
如果您有足够的权限,可以使用powershell来完成此任务。我无法确定这是否适合你,因为我不知道你的输出是什么样的,但希望这会让你到达目的地。
$SQLAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SQLCommand = New-Object system.Data.SqlClient.SqlCommand
$DataSet = New-Object System.Data.DataSet
[STRING]$SQLServer = 'YourServer';
[STRING]$SQLDatabase = 'YourDatabase';
[STRING]$SQLConnectString = "Data Source=$SQLServer; Initial Catalog=$SQLDatabase; Integrated Security=True";
$SQLConnection = New-Object System.Data.SqlClient.SqlConnection($SQLConnectString)
$extractFile = "C:\test.csv"
for($x = 0; $x -le 100; $x++) {
$file = "$($extractFile.Split('.')[0])$($x).csv"
$SQLQuery = "Exec LongRunningProcedure @num = $x"
$SQLConnection.Open()
$SQLCommand.CommandText = $SQLQuery
$SQLCommand.Connection = $SQLConnection
$SQLAdapter.SelectCommand = $SQLCommand
$SqlAdapter.Fill($DataSet) | Out-Null
$SQLConnection.Close()
$DataSet.Tables[0] | Export-Csv $file
}