一尘不染

如何使Microsoft BCP导出空字符串而不是NUL字符?

sql

我正在尝试使此bcp工具以特定方式工作。-c开关应该使用chars导出,但是由于某些原因,Notepad
++中显示了一个奇怪的char,就像它是UNICODE还是其他格式一样。

我想获取该char(在数据库中为空字符串)作为空字符串导出到文本文件中。你是怎样做的?


阅读 141

收藏
2021-03-10

共1个答案

一尘不染

好吧,在网上浏览后,这就是我发现的东西。考虑将其放在SO中,以便更多的人可以使用它。

http://www.techtalkz.com/microsoft-sql-server/147106-how-export-empty-
strings-via-bcp.html

但是,当我运行bcp时,使用ASCII“ NUL”字符(0x0)将空字符串写入文本文件。相反,我希望该字段填充空白(0x20)。

解决方案:

在文本文件中,批量处理数据时,空字符串将解释为NULL。NUL字符被解释为空字符串,因此具有一致性。但这对将数据导出到另一个系统没有太大帮助。

只需将NULLIF可能在数据库中为空的那个字段包装起来,并使其捕获''并替换为NULL。这将被转换为^^ values
^^^^更多的值^^和更多^^,因此您将获得一个带空格而不是NUL字符的双分隔符。

例如:

...
NULLIF(pri.InstanceName, '') as PerformanceInstanceName,
...

希望这对某人有帮助。

2021-03-10