私はこのbcpツールを特定の方法で機能させるために働いていました。 -cスイッチはcharsを使用してエクスポートすることになっていますが、何らかの理由で、UniCODEやその他の形式のようにNotepad ++に奇妙なcharが表示されていました。
データベース内の空の文字列であるそのcharを取得して、空の文字列としてテキストファイルにエクスポートしたかったのです。どうやってそれをしますか?
さて、ウェブを見回した後、これは私が見つけたものです。 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,
...
これが誰かを助けることを願っています。
ただのフォローアップ...
上記のNULLIF
ソリューションはMicrosoftSQLで正常に機能しますが、ほとんどすべてのデータベースで機能するより標準化されたソリューションについては、COALESCE
を試す必要があります。
構文は非常に似ています。
COALESCE(pri.InstanceName, '') as PerformanceInstanceName