2012-01-16 86 views
0

我有一个带有.sql文件的文件夹;每个查询1个文件。我想执行所有查询/ sql文件并将它们保存为csv。如何使用SQL Server 2008脚本执行文件夹

有没有办法做到这一点,而不使用Windows CLI(在我的环境中禁用)。我有SQL Server Management Studio。

回答

2

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

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

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

执行SQL命令每个,存储在数据集的结果。

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

对于每个.csv文件,你将需要遍历DataTable中的每一个细胞,并利用适当的转义的.csv文件。

3

我会使用SSIS来处理此任务,只要您安装了Business Intelligence Development Studio(BIDS)。

首先用SQL文件创建一个指向该文件夹的'Foreach Loop Container',然后使用一个变量来检索每个文件名。

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

接下来,使用“执行SQL任务”组件将'SQLSourceType'设置为'文件连接'并将'FileConnection'设置为上一步中创建的'SQLConnection'。最后,根据数据的返回方式,如果结果集很小,只有一行或一列,那么您可以将结果保存到变量中,并使用“数据流”任务创建一个“派生列”组件并将该变量的内容导出到CSV文件。或者,如果数据集较大,则可以将结果转储到临时表,然后使用“OLE DB源”和“OLE DB目的地”,将完整的结果集直接推送到CSV中。

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

+0

我不认为这是一个非曲折的解决方案。好的回答 – 2012-01-16 17:18:59

+0

谢谢你的回答。我发现我们有一个非常旧的Business Objects副本,它解决了我的问题:我可以立即运行所有查询并将它们保存为多页Excel文件。在这种情况下,再分离csv就更好了。 – Lennart 2012-01-16 20:18:01

0

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

相关问题