[英]NULL is displayed as an output of executing bcp command in sql
我正在建立要在SQL中使用bcp
实用程序执行的query
。
执行查询后,我得到一个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
本身,一切正常
有什么事吗
我不确定这是您的问题,还是我尝试复制您的问题时遇到的问题。 当我设置@query时,我将部分select语句放在一行上,然后按Enter键,并将我的更多语句放在下一行上。 运行此命令时,输出为“用法:bcp {dbtable | query} {in | out | queryout | format}数据文件... NULL。” 但是,当我将语句放在一行上时,一切正常。 我认为这与数据类型大小无关,因为我尝试将@query和@bcpcommand增加到4000,但仍然遇到相同的错误。 我希望这有帮助!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.