SQL Server:将查询导出为 .txt 文件

Posted

技术标签:

【中文标题】SQL Server:将查询导出为 .txt 文件【英文标题】:SQL Server : export query as a .txt file 【发布时间】:2013-12-16 20:24:36 【问题描述】:

我正在尝试将我的 SQL Server 查询结果导出到 .txt 格式的文件夹中(这是针对自动化作业)

我知道 mysql 中的等效项适用于 INTO OUTFILE。有谁知道在 SQL Server 2008 Management Studio 中执行此操作的最佳方法?

SELECT DISTINCT RTRIM (s1.SGMNTID) AS 'AccCode',RTRIM (s1.DSCRIPTN) AS 'CodeDesc', CASE
    WHEN  s1.SGMTNUMB = '1' THEN '1' 
    WHEN s1.SGMTNUMB = '2' THEN '2'
    WHEN s1.SGMTNUMB = '3' THEN '110'
    WHEN s1.SGMTNUMB = '4' THEN '4'
    WHEN s1.SGMTNUMB = '5' THEN '120'
    END AS 'AccountType_id',
CASE WHEN s1.SGMTNUMB = '2' 
THEN LEFT(s1.SGMNTID, 2)
ELSE 'DEFAULT'
END AS 'AccGroupName'

 FROM GL40200 s1

UNION 

SELECT  REPLACE ([ACTNUMBR_1]+'-'+ [ACTNUMBR_2]+'-'+ [ACTNUMBR_3]+'-'+[ACTNUMBR_4]+'-'+    [ACTNUMBR_5],' ', '') AS 'AccCode',
 '' AS 'CodeDesc',
 '0' AS 'AccountType_id',
 'Default' AS 'AccGroupName'
FROM GL00100 a

INTO OUTFILE 'C:\Users\srahmani\verian/myfilename.txt'

【问题讨论】:

【参考方案1】:

您在 SSMS 应用程序中执行此操作,而不是 SQL。

在工具栏中选择:

Query --> Results To --> Results To File

然后执行 SQL 语句,它会提示您保存到扩展名为 .rpt 的文本文件。在文本编辑器中打开结果。

【讨论】:

所以如果我需要将查询设置为作业,就没有办法在命令行上执行此操作吗? 当然,使用 SqlCmd 或 BCP。公平地说,您询问了如何“在 SQL Server 2008 Management Studio 中”进行操作。 该解决方案似乎有限 - 您需要 Crystal Reports 才能阅读它。 @SteveStaple 不知道你的意思 - 它只是一个文本文件。 您可以使用记事本打开文件。【参考方案2】:

另一种方法是从命令行,使用 osql:

OSQL -S SERVERNAME -E -i thequeryfile.sql -o youroutputfile.txt

这可以从 BAT 文件中使用,并由 windows 用户调度以进行身份​​验证。

【讨论】:

【参考方案3】:

您可以使用bcp utility。

要将结果集从 Transact-SQL 语句复制到数据文件, 使用 queryout 选项。以下示例将查询结果复制到 Contacts.txt 数据文件中。该示例假定您正在使用 Windows 身份验证,并且与您正在运行 bcp 命令的服务器实例建立了可信连接。在 Windows 命令提示符,输入:

bcp "<your query here>" queryout Contacts.txt -c -T

您可以通过在 SQL Agent 作业中直接调用作为操作系统命令来使用 BCP。

【讨论】:

【参考方案4】:

您可以使用 windows Powershell 执行查询并将其输出到文本文件中

Invoke-Sqlcmd -Query "Select * from database" -ServerInstance "Servername\SQL2008" -Database "DbName" > c:\Users\outputFileName.txt

【讨论】:

【参考方案5】:

BCP 实用程序也可以以 .bat 文件的形式使用,但要注意转义序列(即引号“”必须与 结合使用)和适当的标签。

.bat 示例:

C:
bcp "\"YOUR_SERVER\".dbo.Proc" queryout C:\FilePath.txt -T -c -q
-- Add PAUSE here if you'd like to see the completed batch

-q 必须在查询本身存在引号时使用。

如有必要,BCP 还可以运行存储过程。再次提醒:临时表必须在执行之前创建,否则您应该考虑使用表变量。

【讨论】:

是的,BCP 确实在存储过程中工作。为了解决这个问题,我使用存储过程来收集内存中的数据,然后调度程序启动 BCP 实用程序进行导出。【参考方案6】:

这很容易做到,并且可以在其他查​​询中找到答案。对于那些正在查看此内容的人:

select entries from my_entries where id='42' INTO OUTFILE 'bishwas.txt';

【讨论】:

该命令可能在 MySQL 或 Oracle 中有效。它在 SQL Server 中无效。 好的。谢谢。不知道。

以上是关于SQL Server:将查询导出为 .txt 文件的主要内容,如果未能解决你的问题,请参考以下文章

将 SQL 查询从 Python 导出到 txt 文件

sql server怎么导出查询结果为脚本

将 SQL 查询结果作为 txt 文件自动导出到 Azure Blob 存储

sql server使用bcp导出txt文件然后导入到mysql

如何将SQL server 2008 里的查询结果导出到 Excel 表内?

将 MS SQL Server 查询结果导出到 MS Access