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 查询结果作为 txt 文件自动导出到 Azure Blob 存储
sql server使用bcp导出txt文件然后导入到mysql