- - PR -
SQL Server 2000での.csv出力について
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2006-05-08 19:37
いつもお世話になっています。
bcpをつかってビューで取得した結果をcsvファイルに出力したいのですが、その際に、先頭の行に列名を入れたいのです。一通り、ヘルプを見てみたのですが、うまくいかず困っています。 データベースはSQLServe2000です。 そもそも、そういったことは、bcpで可能なのでしょうか?isqlやosqlを使わないとできないものなのでしょうか? | ||||
|
投稿日時: 2006-05-08 22:33
おつかれさまです。
BCPに列名を表示するオプションはないようです。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=1193377 SQLServe2000であればDTSを使えば、オプションで列名を表示して csv出力することができますが、それでは駄目でしょうか。 | ||||
|
投稿日時: 2006-05-09 09:16
返信ありがとうございます。
プログラムの動作のひとつとして行いたい処理なので、できればコマンドで実行したいと考えています。DTSもコマンドプロンプトから実行できるようですが、客先にDTSパッケージを作らなければならなかったり、セキュリティの関係で動作がうまくいかなかったりするのではないか、という心配があるので・・・ osqlで実行して、列名を先頭に表示することはできたのですが、(コマンドプロンプトの画面をそのまま吐き出しているからなのか)2列目に「--------」と横棒がいっぱい入ってしまって・・・これさえなくすことができれば解決なのですが・・・ | ||||
|
投稿日時: 2006-05-09 09:42
思いつきで試してないですが。
BCPで queryout のオプションを使えばいけるかもしれません。 使用するクエリは次のようなイメージで・・・ select '列1','列2' union all select 列1,列2 from 表1 | ||||
|
投稿日時: 2006-05-09 14:08
UNIONは思いつかなかったです!確かにそれでいけそうですね。
でも、列名が100以上あるので、べた書きはなかなか大変かも・・・ ストアドのsp_columnsを使っても、列名は行単位で出てくるので使えないんですよね・・・何か簡単に列名だけを取得できる方法があれば教えていただきたいのですが・・・ | ||||
|
投稿日時: 2006-05-10 13:19
自己レスで申し訳ないのですが、UNIONって当然のことながら、上のSELECT文と下のSELECT文で、データ型が一緒じゃないと使えないんですよね・・・出力したい結果としては、decimal型が含まれていたり、CASE文が含まれていたりするため、エラーになってしまいました・・・
今考えているのは、(プロの中で).csvファイルが吐き出された後に、そいつを開いて2行目だけ削除して、また閉じる、というなんともダサい処理を行おうとしているのですが・・・もっとエレガントは方法があれば教えていただきたいですm(_ _)m | ||||
|
投稿日時: 2006-09-16 01:51
もう遅いでしょうけど、convertしたらどうだったのかなって思いました。 | ||||
1
