Sky*_*Sky 44 sql-server-2008 t-sql
我们需要将 SELECT 查询结果写入一个 csv 文件。如何在 SQL Server 2008 r2 中使用 T-SQL 来完成?我知道它可以在 SSIS 中完成,但由于某些原因,我们没有这个选项。
我尝试使用下面文章中建议的 proc,但是当我运行该 proc 时,SQL 抱怨无法运行在此 proc 中调用的 sys.sp_OACreate 和 sys.sp_OADestroy。
您知道我们如何打开这些组件或知道使用 T-SQL 写入文件的更好方法吗?
提前致谢。
RK *_*ala 58
使用BCP 实用程序
bcp "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable" queryout "D:\MyTable.csv" -c -t , -S SERVERNAME -T
Run Code Online (Sandbox Code Playgroud)
该-c参数指定Ç haracter输出,而不是SQL的原始二进制格式; 此默认为制表符分隔的值,但-t ,改变了场吨erminator到逗号。 -T指定Windows身份验证(“牛逼生锈连接”),否则使用-U MyUserName -P MyPassword。
默认情况下,这不会导出列标题。您需要对标题使用 UNION ALL
或者
使用 SQLCMD
SQLCMD -S SERVERNAME -E -Q "SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable"
-s "," -o "D:\MyData.csv"
Run Code Online (Sandbox Code Playgroud)
或者
使用 Powershell
这是一篇文章的链接。如果您最终使用它,您可能希望在输出文件中添加-notype之后Export-Csv $extractFile删除不必要的列。
Mar*_*ian 26
添加到先前的答案,它可以帮助您自动化操作,如果您只是偶尔需要它,您可以在 Management Studio 中执行它,只需右键单击标题 - 将结果另存为 -> 选择一个 .csv 文件。
或者,如果您想为您运行的每个 select 语句执行此操作,您可以将结果的输出方向更改为文件。使用Tools -> Options -> Query Results - Results to file。
另一种可以轻松自动化并利用 SSIS 的方法是使用 Management Studio 的导出数据功能。右键单击数据库-> 任务-> 导出数据。那里有一个有很多选项的向导。您应该选择源数据库、目标和其他选项。对于目的地,请确保它是“平面文件”,浏览并选择 .csv 类型,选择您需要的任何格式,最后您将获得一个可以在本地保存并根据需要重复的 SSIS 包。
小智 11
使用 T-SQL
INSERT INTO OPENROWSET('Microsoft.ACE.OLEDB.12.0','Text;Database=D:\;HDR=YES;FMT=Delimited','SELECT * FROM [FileName.csv]')
SELECT Field1, Field2, Field3 FROM DatabaseName
Run Code Online (Sandbox Code Playgroud)
但是,有几个警告:
小智 6
技术含量低,但...
select
col1 + ','
+ cast(col2 as varchar(10)) + ','
+ col3
from mytable;
Run Code Online (Sandbox Code Playgroud)
看起来您已经有了一个可以接受的解决方案,但是如果您设置了 db 邮件,您可能会执行以下操作:
EXEC msdb.dbo.sp_send_dbmail
@recipients='your.email@domain.com',
@subject='CSV Extract',
@body='See attachment',
@query ='SELECT Col1,Col2,Col3 FROM MyDatabase.dbo.MyTable',
@attach_query_result_as_file = 1,
@query_attachment_filename = 'CSV_Extract.txt',
@query_result_separator = ',',
@query_result_header = 1
Run Code Online (Sandbox Code Playgroud)
如果您无论如何都要通过电子邮件将文件发送到某个地方,它可能会为您节省几个步骤。
| 归档时间: |
|
| 查看次数: |
299190 次 |
| 最近记录: |