我在SQL中为我的bcp命令构建查询。 当执行我有以下错误的语句:SQL中用于bcp命令的查询语法有些问题
Conversion failed when converting the varchar value 'SELECT 'Transaction Unique ID','Transaction Date', 'Person Unique ID' UNION ALL SELECT NULL AS 'Transaction Unique ID', CONVERT(VARCHAR(10),CONVERT(DATETIME,Date,1),101) AS ' Transaction Date', NULL AS 'Person Unique ID' FROM tblChromeRiverInitData WHERE YYYYMM = ' to data type int.
这是我的BCP命令的语法:
DECLARE @query VARCHAR(2000)
DECLARE @bcpCommand VARCHAR(1024)
DECLARE @sharedDevFolder VARCHAR(500)
DECLARE @fileName VARCHAR(200)
DECLARE @environment VARCHAR(5)
DECLARE @customerCode VARCHAR(5)
DECLARE @parserConfig VARCHAR(5)
DECLARE @bucketAssign VARCHAR(10)
DECLARE @dateFormat VARCHAR(15)
DECLARE @input VARCHAR(15)
DECLARE @RC int
SET @sharedDevFolder = '\\REMOTE_SERVER\MyDirectory\'
SET @input = 201507
SET @fileName = 'Transaction-' +
@environment + '-' +
@customerCode + '-' +
@parserConfig + '-' +
@bucketAssign + '-' +
@dateFormat + '.txt'
SET @query =
'SELECT ''Transaction Unique ID'',''Transaction Date'', ''Person Unique ID'' UNION ALL SELECT NULL AS ''Transaction Unique ID'', CONVERT(VARCHAR(10),CONVERT(DATETIME,Date,1),101) AS '' Transaction Date'', NULL AS ''Person Unique ID'' FROM tblChromeRiverInitData WHERE YYYYMM = ' + CAST(@input as VARCHAR(10))
SET @bcpCommand = 'bcp "' + @query + '" queryout "'
set @bcpCommand = @bcpCommand + @sharedDevFolder + @fileName + '" -c -T -t^| -r\n'
EXEC @RC = master..xp_cmdshell @bcpCommand
我不知道什么是错的。
执行时,下面的查询打印:
SELECT 'Transaction Unique ID','Transaction Date', 'Person Unique ID' UNION ALL SELECT NULL AS 'Transaction Unique ID', CONVERT(VARCHAR(10),CONVERT(DATETIME,Date,1),101) AS 'Transaction Date', NULL AS 'Person Unique ID' FROM tblChromeRiverInitData WHERE YYYYMM = '201507'
我一直在试图解决它有时已经和它真的烦我。
你能解释我做错了什么,如果可能的话,提供给我正确的做法吗?
在这个查询的哪一行你会得到那个错误信息?你可以验证这是正在执行的* actual *查询(除了可能的sharedDevFolder值),而不是你为这个问题改变了什么吗?例如,你可以验证@input的类型实际上是一个varchar,并且在创建@query时确实使用了这个变量,并且设置@query的行不会使用'...'+ 201507',而你只是认为变量看起来更好? –
只是一个提示,而不是单引号,请为您的标识符尝试方括号([,])。 – cjb110
没有线指示符。只是'bcp'命令没有执行 – gene