如何使用SQL Server 2008脚本执行文件夹

时间:2012-01-16 16:21:31

标签: sql-server sql-server-2008

我有一个带有.sql文件的文件夹;每个查询1个文件。我想执行所有查询/ sql文件并将它们保存为csv。

有没有办法在不使用Windows cli的情况下实现自动化(在我的环境中禁用)。我有SQL Server Management Studio。

3 个答案:

答案 0 :(得分:3)

如果安装了Business Intelligence Development Studio(BIDS),我会使用SSIS来完成此任务。

首先创建一个'Foreach循环容器',指向包含SQL文件的文件夹,然后使用变量来检索每个文件名。

接下来,创建一个平面文件连接,并将“连接字符串”属性设置为包含文件位置的变量。

接下来,使用“执行SQL任务”组件将“SQLSourceType”设置为“文件连接”,将“FileConnection”设置为上一步中创建的“文件连接”。

最后,根据数据的返回方式,您有几个选项,如果结果集很小,只有一行或一列,那么您可以将结果保存到变量并使用“数据流”任务创建“派生列”组件并将该变量的内容导出为CSV文件。或者,如果数据集较大,您可以将结果转储到临时表,然后使用“OLE DB源”和“OLE DB目标”,您可以将完整的结果集直接推送到CSV。

希望这不是一个解决方案太复杂,这种方法的优点是可以从远程计算机或服务器本身运行,而且您可以使用SQL代理作业自动执行它。

答案 1 :(得分:2)

创建一个VB.NET控制台应用程序。

从相关文件夹生成以.SQL结尾的文件列表。

将每个文件的内容加载到单独的SQL命令

为每个执行SQL命令,将结果存储在DataSet中。

对于每个数据集中的每个表,创建一个新的.csv文件

对于每个.csv文件,您需要遍历数据表中的每个单元格,并对.csv文件使用正确的转义。

答案 2 :(得分:0)

对脚本文件夹中的每个文件使用'for'与sqlcmd或bcp命令结合使用。