BCP实用程序:无法导出为具有空值的文本文件

时间:2018-10-11 10:45:28

标签: sql sql-server stored-procedures bcp

尝试使用bcp实用工具导出到文本文件时遇到问题。这是我的脚本:

USE [Siron_ETL]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER procedure [dbo].[customer]
AS
Declare   @V_SQL_TMP     VARCHAR (4000)
SET @V_SQL_TMP = 'bcp " SELECT  INSTITUTE+H_COUNTRY+replicate('' '',3-len( H_COUNTRY)) from [Siron_ETL].[dbo].[in_customer]" queryout "C:\Customer.txt" -c -UTF8 -T -t -Slocalhost'  
EXEC xp_cmdshell @V_SQL_TMP

但是,当H_Country为NULL时,我没有在Customer.txt中导出数据。如果我将NULL值替换为空格或任何字符,它将起作用。我如何导出列中的NULL值。

1 个答案:

答案 0 :(得分:0)

如果您需要在输出文件中为该字段看到3个空格,那么您需要在自己中放入空格,并强制它们(使用NULLIF调用)...我不建议这样做...或最好的方法是,无论您得到什么值(文本,空格或null),都希望该字段始终为3个字节,则将该字段指定为char(3)。只需在查询中将该字段转换为char(3)。

从[Siron_ETL]中选择CAST(INSTITUTE + H_COUNTRY AS CHAR(3)。[dbo]。[in_customer]