【问题标题】:Generating a .csv file by running a .sql script with osql.exe通过使用 osql.exe 运行 .sql 脚本来生成 .csv 文件
【发布时间】:2012-10-15 20:58:24
【问题描述】:

我的文件夹中有一个脚本文件。我想使用 TSQL 运行此脚本而不在 SSMS 中打开它,因为我将使用 SSIS 运行此脚本以生成 CSV。

我已经使用 OSQL 通过执行流程任务来实现这一点,但它并没有给我我正在寻找的确切结果。它在 csv 中生成空间。当我使用 OSQL 代码执行时,我通过右键单击导出为 CSV 选项的 17 mb 文件变成了 1gb。我使用的 OSQL 是:

-E -S CCCMSDSQL20,1819 -d SHARE_SCRUB -q "SET NOCOUNT ON" -i "C:\Scripts\.SQL" -o "C:\Scripts\.csv" -n -h-1 -s"," -w 700

我更喜欢可以实现相同功能的TSQL脚本,这样我就可以在Execute SQL任务中使用它并获得结果。

编辑: 我正在从一个文件夹中的多个 .sql 文件生成多个 csv。我正在使用每个循环容器并执行流程任务。我想更改执行流程任务以执行 sql 任务并使用此脚本生成多个文件。

如果可以编写一个 TSQL 代码,它可以在一个脚本中循环和生成 CSV 文件,我可以在不使用包的情况下使用它。

感谢您的时间和帮助。

【问题讨论】:

  • 如果您能解释一下为什么需要使用 .sql 脚本而不是 SSIS 数据流来导出数据,这可能会有所帮助?

标签: sql-server-2008 tsql ssis ssms osql


【解决方案1】:

你的 osql 参数是我所期望的,我只是做了一个小演示来做类似的事情,它可以正常工作。

我会检查您的实际 sql 脚本及其在 SSMS 中的结果,以确保它不会返回超出您想要的范围。

另外,它可能不是您想要的,因为您还打算将它与 Execute SQL 任务一起使用,但我会指出 bcp 是专门为将数据复制进和复制出 SQL 而设计的,您可以使用 pure T-SQL 使用 opendatasource 制作 CSV 文件,无需使用 -o 将 OSQL 的结果转储到文件中。

【讨论】:

  • @Pondlife:感谢您的回复和编辑。我要求的 SQL 脚本是在 Execute SQL 任务中使用它,该任务又在 For each loop 容器中使用,以执行多个脚本和生成 CSV。现在我正在使用执行流程任务和 OSQL,它们给出了如上所述的错误。所以 TSQl 脚本可以帮助我实现这一目标
  • 感谢您的回复。您能解释一下如何使用 opendatasource。我正在专门寻找 TSQL,以便我可以完全从我的代码中取出 OSQL。
  • @user1757018 看看sqlservercentral.com/articles/OpenDataSource/61552 那个主要是从里面读来的,但是基本概念是一样的,还有其他资源的链接。
猜你喜欢
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 2021-06-04
  • 1970-01-01
相关资源
最近更新 更多