私は、この bcp ツールを特定の方法で動作させるために作業していました。-c スイッチは文字を使用してエクスポートすることになっていますが、何らかの理由で、UNICODE またはその他のフォーマットであるかのように、Notepad++ に奇妙な文字が表示されていました。
データベース内の空の文字列である 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
ソリューションは Microsoft SQL で問題なく機能しますが、ほぼすべてのデータベースで機能するより標準化されたソリューションを試す必要がありますCOALESCE
。
構文は非常に似ています。
COALESCE(pri.InstanceName, '') as PerformanceInstanceName