我一直在寻找这个问题的答案,到目前为止找不到任何东西。
使用查询执行bcp命令时,我将NULL
作为输出。
但是,在单独执行查询时,一切看起来都不错。
首先,我想,可能是我的查询有错误,但在成功执行后,我更加困惑。
所以,这是我执行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 INT
DECLARE @RC INT
SET @sharedDevFolder = '\\REMOTESERVER\Data'
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)
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
这是我自己的查询:
DECLARE @input INT
SET @input = 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
此查询执行正常。
我不知道从现在开始要去哪里看。