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 写入文件的主要内容,如果未能解决你的问题,请参考以下文章
,如何把txt文本数据导入SQL Server2005数据库中
如何使用 BCP 或 Sql Server Management Studio 从 Sql Server 中获取 BLOB 数据?