【发布时间】:2016-04-06 19:52:21
【问题描述】:
所以,我正在使用 BCP 来更好地了解它,但遇到了一个我无法解决的问题。我收到一个错误,“命令的语法不正确”。
我已经测试了正确构建的完整文件路径,以及正确完成的选择查询本身。有什么想法吗?
我使用的代码是:
DECLARE @fileName varchar(128)
DECLARE @filePath varchar(128)
DECLARE @completeFilePath varchar(128)
DECLARE @sqlCmd varchar(4000)
DECLARE @BCPSwitches VARCHAR(64)
SET @filePath = 'xxxxxx'
SELECT TOP 5 [EMP]
,[SSNO]
,[NAME]
,[STREET]
INTO #ParticipantIdentifiers
FROM xxxxxxxxx
SET @BCPSwitches = '-w -T -t |'
SET @fileName = 'xxxxx.txt'
SET @completeFilePath = @filePath + @fileName
SET @sqlCmd = 'bcp "SELECT * FROM #ParticipantIdentifiers" queryout "'+ @completeFilePath + '" ' + @BCPSwitches
EXEC DemoDB..xp_cmdshell @sqlCmd
【问题讨论】:
-
你能发布在@sqlCmd 变量中生成的内容吗?
-
如果您从 SQLCMD 或 SSMS 运行此脚本,您只需在 EXEC 之前添加“SELECT @sqlCmd”,它就会显示在结果窗口或控制台中。
-
bcp "SELECT * FROM #ParticipantIdentifiers" queryout "\NonEmployee_EEID.txt" -w -T -t |
-
我认为终结符“|” after -t 也需要用引号引起来,因为 shell 可能会将其解释为输出管道..
-
你是个天才我的朋友 :) 谢谢!如果您想将其发布为答案,我会标记它。
标签: sql-server tsql ssms bcp xp-cmdshell