SQL Server 2005 使用 bcp 写入文件

Posted

技术标签:

【中文标题】SQL Server 2005 使用 bcp 写入文件【英文标题】:SQL Server 2005 write to file with bcp 【发布时间】:2017-03-25 01:56:16 【问题描述】:

正在尝试将查询结果写入文件。在 SQL Server 2005 中使用以下内容:

EXEC xp_cmdshell "bcp 'select License + '-' + ISNULL(Name,'') as Employer from People' queryout 'c:\People\text.txt' -c -x -T,"

我玩过单引号和双引号,但语法错误不同。在当前表单中,这将返回错误“复制方向必须是'in'、'out'或'format'。”

我也在命令行上玩过这个,我总是得到“找不到指定的文件。

存储过程全文:

EXEC
master.dbo.sp_configure 'show advanced options', 1
RECONFIGURE
EXEC
master.dbo.sp_configure 'xp_cmdshell', 1
RECONFIGURE
EXEC xp_cmdshell "bcp 'select contrLice + '-' + ISNULL(contrName,'') as Employer from Contractors' queryout 'c:\Contractors\text.txt' -c -x -T,"

有什么建议吗?

【问题讨论】:

你得到什么错误? sql server 运行的主体可能没有 c:\Contractors\ 的读取权限。解决这个问题的最佳方法是使用代理用户 我建议在数据库之外运行 windows 命令。使用 xp_cmdshell 处理错误情况等并不是那么简单。 【参考方案1】:

你需要把单引号加倍:

exec xp_cmdshell "bcp 'select License + ''-'' + coalesce(Name, '''') as Employer from People' queryout 'c:\People\text.txt' -c -x -T,"

【讨论】:

以上是关于SQL Server 2005 使用 bcp 写入文件的主要内容,如果未能解决你的问题,请参考以下文章

BCP 导出数据的问题 老是不成功 SQL2005

SQL Server BCP 资料导入导出

,如何把txt文本数据导入SQL Server2005数据库中

SQL Server批量数据导出导入BCP使用

如何使用 BCP 或 Sql Server Management Studio 从 Sql Server 中获取 BLOB 数据?

如何使用 bcp 将 blob 文件列表导入 SQL Server