LoginSignup
3
1

More than 5 years have passed since last update.

SQL Server Management Studio と BCP で空文字とNULLのファイル上での扱いが異なる

Last updated at Posted at 2018-07-04

概要

SQLServerManagementStudion (以下 SSMS) と BCP のそれぞれで、ファイルへ NULL と空文字を出力した場合、出力結果が異なります。データ登録時も、両者で NULL と空文字の扱いが異なることで、SSMS で出力した内容を BCP で登録したり、BCP で「上位200行の編集」で開いたテーブルに直接コピペで反映した場合に予期せぬ値として登録されてしまうことがあります。

詳細

ファイルへの出力時

表の中はそれぞれの値の出力結果になります。

【対象】 【NULL】 【空文字(スペース0)】 【空文字(スペース1)】
SSMS NULL 空文字(スペース0) 空文字(スペース1)
BCP 空文字(スペース0) 空文字(スペース1) 空文字(スペース1)

ファイルからの登録時

表の中はそれぞれの値の登録結果になります。

【対象】 【NULL】 【空文字(スペース0)】 【空文字(スペース1)】
SSMS NULL 空文字(スペース0) 空文字(スペース1)
BCP 'NULL' NULL 空文字(スペース1)

結論

  • SQLServerManagementStudioで出力したファイルをBCPで取り込まない。
  • BCPで出力したファイルをSQLServerManagementStudioで取り込まない。

補足

Oracle(SI Object Browser)

SI Object Browser は、BCP の入出力結果と考え方が同じのようです。ですので、Oracle <--> SQLServer 間でちょこっとデータ移行をやる場合は、SI Object Browser <--> BCP でのやり取りがよいみたいです。

編集後記

今回、初投稿です。書きっぷり含めてアドバイスがあれば、ぜひお願いします。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1