- - PR -
【BCP】BCPツールでCSV出力すると、空白が一つ入ってしまいます。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-03-29 22:34
BCPツールを使ったCSV出力のとき、space(0)の値が半角空白1つで出力されます。
どうにか、space(0)をnullとして出力したいのですが、何かいい方法はないでしょうか? --現状の結果 , , , , --期待する結果 ,,,, トリムしてもダメでした。 以下、テストしたときのデータです。 --テストデータ create table test (seq int ,char10 char(10) ,varchar10 varchar(10) ) insert into test (seq , char10 , varchar10) values ( 1 , '' , '') insert into test (seq , char10 , varchar10) values ( 2 , null , null) insert into test (seq , char10 , varchar10) values ( 3 , ' ' , ' ') insert into test (seq , char10 , varchar10) values ( 4 , ' ' , ' ') insert into test (seq , char10 , varchar10) values ( 5 , '1234567890' , '1234567890') insert into test (seq , char10 , varchar10) values ( 6 , '6' , '6') insert into test (seq , char10 , varchar10) values ( 7 , '7 ' , '7 ') --トリムあり bcp "select seq , rtrim(ltrim(char10)) , rtrim(ltrim(varchar10)) from testdb.dbo.test" queryout c:\test(トリムあり).txt -c -r\n -t, -U sa -Pabc -o c:\test(トリムあり).log --トリムなし bcp "select seq , char10 , varchar10 from testdb.dbo.test" queryout c:\test(トリムなし).txt -c -r\n -t, -U sa -Pabc -o c:\test(トリムなし).log --トリムあり結果 1, , 2,, 3, , 4, , 5,1234567890,1234567890 6,6,6 7,7,7 --トリムなし結果 1, , 2,, 3, , 4, , 5,1234567890,1234567890 6,6 ,6 7,7 ,7 どうぞよろしくお願いいたします。 [環境]Microsoft SQL Server 2000 SP3 |
|
投稿日時: 2005-03-30 08:21
確認したわけではありませんが、SPACE(0) は長さゼロの文字列を
返しているのだと思います。 私も以前同じ症状に困ったことがあったのですが、BCP は長さゼロの 文字列を 0x00 と出力するようです。それがお手持ちのテキスト エディタではスペースとして表示されているのではないでしょうか? 一度、バイナリエディタか制御文字を表示できるテキストエディタで 確認してみてください。 |
|
投稿日時: 2005-03-30 09:27
水谷さん、ご回答ありがとうございました。
文字列0x00をテキストエディタで確認できました。 ところで、長さゼロの文字列を出力しないようにできないでしょうか? case文で「SPACE(0)だったらnull」というロジックは、シンタックスエラーでだめでした。 どうぞよろしくお願いします。 |
|
投稿日時: 2005-03-30 09:45
自己解決しました!
NULLIF関数を使って、space(0)をnull値にしてから、右側の余白をRTRIM関数で消します。 例)rtrim(nullif(Col001,space(0))) どうもありがとうございました。 |
1