我有几个查询需要在Microsoft SQL Server Management Studio中每周运行一次,每个查询只是一个相对简单的选择查询,结果需要保存到csv文件中。现在,有人花一个小时轮流运行每个脚本并保存结果。
我认为这可能是自动化的,但是很麻烦。
从这里阅读以前的问题,我已经尽可能地使用SQLCMD模式,并通过:output c:\ filename.csv将输出保存到文件中,但是我很难获取要生成的单独文件每个查询。
为简单起见,假设我的查询如下:
select *
from xmltable ('/body/parameters'
passing xmltype('<?xml version="1.0" encoding="UTF-8"?>
<body>
<parameters>
<parameter>
<key>Field1</key>
<value>Field1_value</value>
</parameter>
<parameter>
<key>Field2</key>
<value>Field2_value</value>
</parameter>
<parameter>
<key>Field3</key>
<value>Field3_value</value>
</parameter>
</parameters>
</body>')
columns field1 varchar2(20) path 'parameter[key="Field1"]/value',
field2 varchar2(20) path 'parameter[key="Field2"]/value',
field3 varchar2(20) path 'parameter[key="Field3"]/value'
);
FIELD1 FIELD2 FIELD3
-------------------- -------------------- --------------------
Field1_value Field2_value Field3_value
我没有在每个查询的输出中获取三个文件,而是在File1和File2中填充了几个不可读的字符,并在File3中使用了所有三个查询。我知道在Oracle中有一个假脱机命令,对于OUT:在SSMS中有类似的东西吗?
答案 0 :(得分:1)
我运行了一个经过修改的查询,并且能够获得具有三个不同查询结果的三个文件。我运行了以下内容进行快速测试:
:OUT C:\File1.csv
SELECT 'Hello'
GO
:OUT C:\File2.csv
SELECT 'My'
GO
:OUT C:\File3.csv
SELECT 'Friend'
这给了我三个单独的文件,每个查询的结果都放在一个单独的文件中。我所做的只是取出半角冒号,并添加了关键字GO,它将终止命令并继续执行下一个命令。我希望这会有所帮助。