web-dev-qa-db-ja.com

Microsoft BCPにNULL文字の代わりに空の文字列をエクスポートさせる方法は?

私はこのbcpツールを特定の方法で機能させるために働いていました。 -cスイッチはcharsを使用してエクスポートすることになっていますが、何らかの理由で、UniCODEやその他の形式のようにNotepad ++に奇妙なcharが表示されていました。

データベース内の空の文字列であるそのcharを取得して、空の文字列としてテキストファイルにエクスポートしたかったのです。どうやってそれをしますか?

14
mimoralea

さて、ウェブを見回した後、これは私が見つけたものです。 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,
...

これが誰かを助けることを願っています。

24
mimoralea

ただのフォローアップ...

上記のNULLIFソリューションはMicrosoftSQLで正常に機能しますが、ほとんどすべてのデータベースで機能するより標準化されたソリューションについては、COALESCEを試す必要があります。

構文は非常に似ています。

COALESCE(pri.InstanceName, '') as PerformanceInstanceName
0
D3Young