【问题标题】:Export the content of a SQL Server table to a CSV without using xp_cmdshell不使用 xp_cmdshell 将 SQL Server 表的内容导出到 CSV
【发布时间】:2017-12-08 17:52:16
【问题描述】:

我需要将表格的内容导出到 CSV 文件中。

我尝试使用存储过程中的xp_cmdshell 执行,但它不起作用,因为此组件作为此服务器安全配置的一部分已关闭。

你知道从存储过程写入文件的其他方法吗?

【问题讨论】:

  • 通过这个链接它可以帮助你stackoverflow.com/questions/40028326/…
  • 不能使用sql server的导出工具?其他:social.msdn.microsoft.com/Forums/sqlserver/en-US/…
  • @Srini131 我已经尝试了链接中描述的解决方案。但它使用即席分布式查询,我有这个错误:SQL Server 数据库错误:SQL Server 阻止访问组件“即席分布式查询”的声明“OpenRowset/OpenDatasource”,因为该组件作为安全配置的一部分被关闭这台服务器。
  • 感谢@PrabhatG,但我必须在执行存储过程期间自动导出此表,而不是手动导出。并且不使用 xp_cmdshell
  • 您可以在 .Net 中创建自己的 SP CLR 来实现这一点。如果您需要自定义的东西很有用

标签: sql-server csv tsql stored-procedures export-to-csv


【解决方案1】:

您可以尝试以下几种方法:

1.使用 BCP

语法:

bcp "SELECT * FROM Database.dbo.input" queryout C:\output.csv -c -t',' -T -S .\SQLEXPRESS

微软文档:BCP Utility

2. 第二种方法(适用于 excel,但也适用于 csv):

Insert into OPENROWSET
('Microsoft.Jet.OLEDB.4.0',
'Excel 8.0;Database=D:\testing.xls;',
'SELECT * FROM [SheetName$]') select * from SQLServerTable

为此,您需要通过以下命令启用即席分布式查询:

EXEC sp_configure 'show advanced options', 1
RECONFIGURE
GO
EXEC sp_configure 'ad hoc distributed queries', 1
RECONFIGURE
GO

您可能会遇到链接服务器错误。所以你应该参考:this stack overflow solution

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    相关资源
    最近更新 更多