繁体   English   中英

NULL显示为在SQL中执行bcp命令的输出

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM