【问题标题】:SQL - Automatic results to CSV or Text FileSQL - 自动结果到 CSV 或文本文件
【发布时间】:2015-11-26 13:58:25
【问题描述】:

我想知道是否有人可以提供帮助。

我在 SQL 中有许多查询(都在单独的 *.sql 文件中)。我想知道是否有办法自动运行这些查询或批量运行它们以保存到 csv 或 txt 文件?

另外,我在这些查询中加入了变量,需要在运行查询之前每周进行一次修改。

谢谢。

KJ

您能否就变量提供一些额外的帮助?以前我会将变量声明并设置为:

声明@TW_FROM DATETIME

声明@TW_TO DATETIME

SET @TW_FROM = '2015-11-16 00:00:00'; SET @TW_TO = '2015-11-22 23:00:00';

如何使用 sqlcmd 执行此操作?

【问题讨论】:

  • 从 SQL 代理作业运行的 SQL Server 集成服务将执行此操作。
  • 嗨,Kajan,我刚刚查看了您的个人资料。您提出了 3 个问题,但没有接受任何问题。请在这里看一下:someone-answers。关键是,未被接受的问题永远保持开放。谢谢

标签: sql-server csv sqlcmd invoke-sqlcmd


【解决方案1】:

是的,您可以使用 sqlcmd 来执行此操作。

首先 - 变量。您可以使用$(variablename) 引用 .sql 文件中的变量,只要您想替换变量。例如,

use $(dbname);
select $(columnname) from table1 where column= '$(var1)'

然后使用以下命令调用 sqlcmd(注意参数 -v 变量)

sqlcmd -S servername -d database -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred"

为了将其输出到文件中,您在末尾标记 > filename.txt

sqlcmd -S servername -d database -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred" > filename.txt

如果要输出到 csv,您还可以使用参数 -s 指定分隔符(注意服务器的大写 S 的 idfference)。所以现在我们有

sqlcmd -S servername -d database -s "," -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred" > filename.csv

如果您想将多个命令输出到同一个 csv 或 txt 文件,请使用 >> 而不是 >,因为它会添加到文件的底部,而不是替换它。

sqlcmd -S servername -d database -s "," -i "yoursqlfile.sql" -v dbname="database" columnname="column" var1="Fred" >> filename.csv

要为多个脚本运行此程序,您可以将语句放在一个批处理文件中,然后每周更改变量。

【讨论】:

    【解决方案2】:

    您可以编写一个使用 sqlcmd 的批处理文件:

    MSDN sqlcmd

    这将允许您循环调用脚本文件并将结果输出到文件中。

    【讨论】:

      【解决方案3】:

      将您当前的脚本转换为Stored Procedure。 然后,您可以将变量传递给它并运行查询。

      如果您有可用的 SQL Server 代理(SQL 标准或更好),您可以使用它来自动运行存储过程。

      否则,可以在 windows 中使用任务计划程序来实现。

      至于导出为CSVthis会有用。

      【讨论】:

        【解决方案4】:

        这取决于您的 SQL Server 实际运行的位置。将任何内容写入您想要的位置可能会非常棘手。

        您可以阅读有关 BCP 的信息。

        我的建议是:

        从数据库中的所有查询创建一个 UDF(最好是内联 UDF!)。而不是从 EXCEL 或任何其他合适的产品中调用它们。您可能希望设置一个 Excel,其中所有查询都自动在每个工作表上填写一个

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多