BCPコマンドでDBアクセス!

VB6,VBA,VBS,EXCEL,DOS,BAT,WSH,WORDの小技メモ

HTML/ CSS/ CGI-Perl/ JavaScript/ JavaApplet/ AccessUp/ Internet/ EnglishLearn/ ちゃいちゃん天使/ 天使メッセージ/ 飯田ワールド/ 結城ワールド/ プロフィール/ WEB相談室/ WEBアンテナ/ 燈明日記/ Perlノート/ 漢字起源/ yahoo

はじめに

本ページは、ウインドウズ系全般のティプスメモです。

そう、はじめはVB系のティプスメモだったのですが…いつの間にか、ウインドウズ系全般のティプスメモになってしまいました。

ちなみに、ティプス(Tips)とは、マニュアルに書かれていない技法や裏わざのことですが、本ページでは、私が経験してこれはと思ったノウハウのメモになっています。

尚、以下は本サイトの最新情報(ブログ)です。

それでは、本ページが何かのお役に立てれば幸いです。ごゆっくりご覧ください。

◆ BCPコマンドでDBアクセス!

Microsoft SQL Serverのユーティリティに、DBのデータを汎用的にコピーするBCPコマンドというものがあります。

コピーすることに関しての使用パターンはいろいろ広いのですが、とりあえず、一番必要と思われる DB to CSVテキストを紹介します。

それには、まず、TestBCP.vbsとTestBCP.fmtを用意します。

それらの内容は以下の通りで、XDBName.dbo.XtableテーブルからTestBCP.csvファイルへデータをコピーします。

VBSでBCPを使用した場合のソース(TestBCP.vbs)

Option Explicit
Dim shell, bcpcmd

    Set shell = WScript.CreateObject("WScript.Shell")

        'SQLを編集する
    bcpcmd = """select LogDate, Host, Path  from XDBName.dbo.Xtable " & _
                   """ queryout TestBCP.csv " &_
                   "-T -f TestBCP.fmt > TestBCP.log"

        'コマンドを発行
    shell.run "cmd /C ""bcp " & bcpcmd & """", 0, True
    
    Set shell = Nothing
    WScript.Quit(0)

-Tは、WINDOWS認証です。-fオプションの TestBCP.fmt は、CSVに落とすときのフォーマット指定ファイルです。


フォーマット指定ファイルのソース(TestBCP.fmt)

8.0
3
1       SYBCHAR       0       8       ","                   1     LogDate       ""
2       SYBCHAR       0       65      ","                   2     Host          ""
3       SYBCHAR       0       512     "\r\n"                3     Path          ""

8.0はバージョン番号、3はデータのフィールド数(サンプルでは3)、
左1列目は、フィールドのシーケンス番号
左2列目は、データ型でCSVテキストではSYBCHARとなる
左3列目は、プレフィックス長でCSVテキストでは0となる
左4列目は、フィールド長で項目毎に指定
左5列目は、フィールドの終端文字でCSVの時は、『,』で、最後の項目は『\r\n』
左6列目は、とりあえず、左1列目と同じでよいみたい
左7列目は、フィールド名
左8列目は、とりあえず、『""』でよいみたい

参考 http://www.systeminfinity.co.jp/sub/tech/doc/SQLServer_BCP/BCP1.html

おわりに

以下のページには、すべてのTIPSがあります。もしよろしければ、どうぞ!

尚、ご感想、ご意見、誤字、脱字、間違い等がありましたら遠慮なくVB-TIPS掲示板へご指摘ください。