VBScript の形態は、大きく分けて3つあり、一つは単純な一枚のテキストに全てのスクリプトを書いて実行する拡張子が .vbs のもの。さらに、外部にスクリプトソースを分割する事ができる本格的なプログラミングをする人の為にある拡張子 .wsf のもの。そして、ここでは紹介しませんが、HTML で画面を作成し、ブラウザの中での動きと同じような環境で作成する拡張子 .hta の HTMLアプリケーションがあります。 MySQL に接続して csv ファイルを書き出すだけの処理を .vbs と .wsf で書いています。.wsf で特別な事をしていないのでここではどちらがという事がありませんが、.wsf のほうがいろいろ作法があり、複雑なことが可能になっています。 ADO は VBScript からアクセス可能な、主にデータベースを扱う為にあるオブジェクトです。通常、データーベースへのアクセスは、ADODB.Connection と ADODB.Recordset でほとんどの事を実行する事ができます。 VBScript で記述する場合の最大特徴は、エラー処理で、on error resume next と on error goto 0 の間でエラーが発生した場合に強制終了を回避できるようになっています。 ※ Scripting.FileSystemObject は、テキストファイルを扱う為のオブジェクトです ado_std.vbs
Set Cn = CreateObject( "ADODB.Connection" ) Set Rs = CreateObject( "ADODB.Recordset" ) Set Fs = CreateObject( "Scripting.FileSystemObject" ) strDriver = "{MySQL ODBC 5.3 Unicode Driver}" strServer = "localhost" strDb = "lightbox" strUser = "root" strPass = "パスワード" ConnectionString = _ "Provider=MSDASQL" & _ ";Driver=" & strDriver ConnectionString = ConnectionString & ";Server=" & strServer ConnectionString = ConnectionString & ";Database=" & strDb ConnectionString = ConnectionString & ";UID=" & strUser ConnectionString = ConnectionString & ";PWD=" & strPass ConnectionString = ConnectionString & ";" ' ********************************************************** ' 接続 ' ********************************************************** on error resume next Cn.Open ConnectionString if Err.Number <> 0 then Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ********************************************************** ' クエリー ' ********************************************************** Query = "select * from 社員マスタ" on error resume next Rs.Open Query, Cn if Err.Number <> 0 then Cn.Close Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ********************************************************** ' 出力ファイルオープン ' ********************************************************** Set Csv = Fs.CreateTextFile( "ado_std.csv", True ) ' ********************************************************** ' データ出力 ' ********************************************************** Do While not Rs.EOF Buffer = "" For i = 0 to Rs.Fields.Count - 1 if Buffer <> "" then Buffer = Buffer & "," end if Buffer = Buffer & """" & Rs.Fields(i).Value & """" Next Csv.WriteLine Buffer Rs.MoveNext Loop ' ********************************************************** ' ファイルクローズ ' ********************************************************** Csv.Close ' ********************************************************** ' レコードセットクローズ ' ********************************************************** Rs.Close ' ********************************************************** ' 接続解除 ' ********************************************************** Cn.Close Wscript.Echo "処理が終了しました"
ado_pro.wsf
<JOB> <COMMENT> ************************************************************ ■著作権その他 このプログラムはフリーです。どうぞ自由に御使用ください。 著作権は作者である私(lightbox)が保有しています。 また、本ソフトを運用した結果については、作者は一切責任を 負えせんのでご了承ください。 ************************************************************ </COMMENT> <OBJECT id="Cn" progid="ADODB.Connection" /> <OBJECT id="Rs" progid="ADODB.Recordset" /> <OBJECT id="Fs" progid="Scripting.FileSystemObject" /> <SCRIPT language="VBScript"> strDriver = "{MySQL ODBC 5.3 Unicode Driver}" strServer = "localhost" strDb = "lightbox" strUser = "root" strPass = "パスワード" ConnectionString = _ "Provider=MSDASQL" & _ ";Driver=" & strDriver ConnectionString = ConnectionString & ";Server=" & strServer ConnectionString = ConnectionString & ";Database=" & strDb ConnectionString = ConnectionString & ";UID=" & strUser ConnectionString = ConnectionString & ";PWD=" & strPass ConnectionString = ConnectionString & ";" ' ********************************************************** ' 接続 ' ********************************************************** on error resume next Cn.Open ConnectionString if Err.Number <> 0 then Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ********************************************************** ' クエリー ' ********************************************************** Query = "select * from 社員マスタ" on error resume next Rs.Open Query, Cn if Err.Number <> 0 then Cn.Close Wscript.Echo Err.Description Wscript.Quit end if on error goto 0 ' ********************************************************** ' 出力ファイルオープン ' ********************************************************** Set Csv = Fs.CreateTextFile( "ado_pro.csv", True ) ' ********************************************************** ' データ出力 ' ********************************************************** Do While not Rs.EOF Buffer = "" For i = 0 to Rs.Fields.Count - 1 if Buffer <> "" then Buffer = Buffer & "," end if Buffer = Buffer & """" & Rs.Fields(i).Value & """" Next Csv.WriteLine Buffer Rs.MoveNext Loop ' ********************************************************** ' ファイルクローズ ' ********************************************************** Csv.Close ' ********************************************************** ' レコードセットクローズ ' ********************************************************** Rs.Close ' ********************************************************** ' 接続解除 ' ********************************************************** Cn.Close Wscript.Echo "処理が終了しました" </SCRIPT> </JOB>
現在、VBScript の進化は Microsoft 内では止まって(終わって)おり、後継としては、Framework の使える PowerShell になっていますが、かなり敷居の高いものとなっているため、今でも VBScript の範囲でできる事が多いせいもあって、VBScript が使われているところは多いと思います。 関連する記事
|
【MySQLの最新記事】
- MySQL に PIPES_AS_CONCAT を設定して、CSV を出力する SQL
- MySQL : DB のデータを簡単に沢山作る方法は inner join
- MySQL で、Group by して合算された行内で最新データの明細を再び取り出す SQL
- MySQL のコマンドラインの操作
- Windows 環境の MySQL から日本語名のテーブルを コマンドプロンプトでエクスポート(mysqldump.exe)する
- MySQLの日本語オンラインマニュアル、5.6 とその中のいくつかの重要なリンク
- MySQL のコマンドプロンプトからの処理用バッチファイル
- MySQL で、主キーの作り変えのプロセス / serial では、自動的に インデックスが作成されます
- MySQL 5.6 (Generally Available (GA) Releases) インストール
- MySQL : 引数の無い LAST_INSERT_ID() と 引数のある LAST_INSERT_ID( n ) の使用方法
- MySQL における AUTO_INCREMENT 列の設定および詳細
- MySQL のプログラムからの経過時間の表現方法( CAST, STR_TO_DATE, GET_FORMAT, DATE_FORMAT, TIMEDIFF )
- MySQL で出退勤の列を datetime 型で持った場合、列を使用して DATEDIFF と TIMEDIFF で直接計算
- MySQL を UTF-8 環境で作成して、mysqldump.exe でバックアップするバッチファイルのサンプル
- MySQL 5.6 : テストデータ自動作成スクリプト
- PHP + MySQL : Windows の COM を使った ODBC 経由での接続とデータの取得(SELECT)
- PHP + MySQL : Windows における ODBC 経由での接続とデータの取得(SELECT)
- PHP + MySQL : PDO_MySQL での接続とデータの取得(SELECT)
- PHP + MySQL : MySQL 改良版拡張モジュール mysqli クラスでの接続とデータの取得(SELECT)
- PHP + MySQL : PHP 5.5.0 で非推奨の MySQL 関数での接続とデータの取得(SELECT)