2007.08.14

bcpユーティリティで予約語を回避する

bcpユーティリティは、SQLServerテーブルから、
データを一括でインポート・エクスポートしたりすることができます。
SQLServerから、CSVファイルを作成したり、取り込んだりといった場合に、
使用したことがある人も、多いのではないでしょうか。

先日、T-SQLのストアドから、bcpユーティリティを使用して、
CSVファイルを作成する時に、クエリのエラーになってしまいました。

「ANY」という列名だったので、エラーは、
「キーワード 'ANY' 付近に正しくない構文があります。」でした。

T-SQLの記述ミスだと思っていたのですが、
SQL中に「ANY」は使用していませんでした。

調べていくうちに、対象テーブルの列名に、
「ANY」が含まれていると気がつきました。

どうにか簡単に修正できないか、と調べていくと
-qオプションというものを発見しました。

-qオプションは、空白や引用符を含むデータベースを指定する時に使います。
また、空白や引用符を含んでいる所有者、テーブル、
ビューの名前について、使用する時にも使うことができます。

参考:http://msdn2.microsoft.com/ja-jp/library/ms162802.aspx

この-qオプションを使用したところ、解決することができました。

-qオプションは、列名に予約語が含まれている時にも、有効なようです。

予約語が命名されているテーブルに対して、bcpコマンドを使用する時には、
試してみてください。

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

photo
matsumoto