我在SQL中使用query
实用程序构建bcp
。
执行查询后,我将NULL
结果作为输出。
我已经在相关讨论中提出了一个问题,但问题集中在不同类型的错误上。
这是我的疑问:
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 INT
DECLARE @RC INT
SET @sharedDevFolder = '\\REMOTE_SERVER\DATAFOLDER\'
SET @input = 201507
SET @environment = 'DEV'
SET @customerCode = '123'
SET @parserConfig = '100'
SET @bucketAssign = 'Bucket1'
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) + ''''
select @query
--need to change @sharedDevFolder depending on a server environment
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'
它看起来很好。
但是,执行时
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 = @input
本身,一切正常
有什么不对?
答案 0 :(得分:0)
我不确定这是你的问题,还是我尝试复制你的问题时遇到的问题。当我设置@query时,我将部分select语句放在一行上,然后按Enter键并将更多的语句放在下一行。当我运行这个时,我得到的输出说“用法:bcp {dbtable | query} {in | out | queryout | format} datafile ... NULL。”但是,当我把声明放在一行时,一切正常。我不认为这是数据类型大小的问题,因为我尝试将@query和@bcpcommand增加到4000并仍然得到相同的错误。我希望这有帮助!