如何使用变量将查询的html输出保存到文本文件?

时间:2012-04-06 16:40:10

标签: html sql sql-server tsql

我的查询更复杂,但基本上为我创建了一个HTML页面。

DECLARE @indSubject varchar(7)
SET @indSubject = '61-0036'

--  LOTS of query stuff here that makes a page.  For simplicity 
--  just use this:

SELECT '<html><body>' + @indSubject + '</body></html>'

我想做两件事:

  1. 让SQL Server将其保存在我的机器上,名称为 @ indSubject.html(例如C:\ TEMP \ HTMLOUTPUT \ 61-0036.html)
  2. 能够将不同的值传递给@indSubject(例如91-0003)。 Something命令行是什么?
  3. 我可以用BCP这样做吗?其他一些方式?

    请注意,这是我个人的所有内容,并没有部署在网络服务器上,因此我不必非常担心安全性,SQL注入等(至少我希望我不会这样做) ;!吨)

2 个答案:

答案 0 :(得分:2)

您可以使用SQLCMD来轻松完成此任务。

如果将现有查询保存为.sql文件,则可以使用SQLCMD执行此操作。

此外,SQLCMD将允许您在.sql文件${indSubject}中指定一个变量,然后可以从命令行提供该变量。

最后,使用-o开关,您可以将结果直接输出到文件,并且可以使用以下环境设置来抑制结果集上的标题:

:SETVAR SQLCMDHEADERS -1

答案 1 :(得分:1)

为了我的理智(和Michael的),这里的代码似乎有效:

    :SETVAR SQLCMDHEADERS -1
    DECLARE @indSubject varchar(7)
    SET @indSubject='$(indSubject)'

    --  LOTS of query stuff here that makes a page.  For simplicity 
    --  just use this:


    SELECT '<html><body>' + @indSubject + '</body></html>'

当使用命令sqlcmd -E -S(Local)\SQLExpress -v indSubject = "61-0022" -dmyDatabase -y 0 -iC:\temp\test4.sql -oC:\temp\out.html时,文件out.html如下所示:

    <html><body>61-0022</body></html>
    (1 rows affected)