【问题标题】:BCP Utility: Couldnt export to text file with null valueBCP 实用程序:无法导出到具有空值的文本文件
【发布时间】:2019-03-16 10:06:55
【问题描述】:

我在尝试使用 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 值导出。

【问题讨论】:

  • CUSTNO 与您的查询之间似乎没有任何关系。请说明您的情况。
  • @SM或者对不起。这是 H_Country
  • H_COUNTRY 为NULL 时,您认为3-len(H_COUNTRY) 会发生什么?
  • 我预计当它为空时。它应该替换为 3 个空格。像''

标签: sql sql-server stored-procedures bcp


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-19
    相关资源
    最近更新 更多