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 " &_ "-P xxxx -f TestBCP.fmt > TestBCP.log" 'コマンドを発行 shell.run "cmd /C ""bcp " & bcpcmd & """", 0, True Set shell = Nothing WScript.Quit(0)
- Pオプションの xxxx は、DBのパスワードです。-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