15

我正在努力让这个 bcp 工具以特定的方式工作。-c 开关应该使用字符导出,但由于某种原因,Notepad++ 中显示了一个奇怪的字符,就像它是 UNICODE 或其他格式一样。

我想得到那个字符,它是数据库中的一个空字符串,作为一个空字符串导出到文本文件中。你是怎样做的?

4

2 回答 2

26

好吧,在浏览了网络之后,这就是我发现的。想把它放在 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^^^^more values^^and more^^ 所以你得到带有空格而不是 NUL 字符的双分隔符。

例如:

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

希望这可以帮助某人。

于 2012-09-25T17:31:39.643 回答
1

只是后续...

上面的NULLIF解决方案在 Microsoft SQL 中运行良好,但对于几乎适用于任何数据库的更标准化的解决方案,您应该尝试COALESCE

语法非常相似:

COALESCE(pri.InstanceName, '') as PerformanceInstanceName
于 2015-02-06T17:04:38.383 回答