« VB たかがソート,されどSort | トップページ | Oracle VBA/VB oo4o,ODBC,ADO 速度比較 »

2015年3月31日 (火)

VB MySQLのデータをCSVファイルに出力するツール

MySQLで複数のデータベース,テーブルを作ってデータを自動入力させているのですが,データを入力するソフトを制作,デバッグしている際,データベースサーバーにちゃんとデータが入っているかちょっと調べたいと思っても,ちょうど良いツールがなかなか無かったりします(探し方が悪い?)。
MySQL for Excel」と言うアドインツールをオラクルが提供しており,このツールが目的に合うのですが,都度,Excelを起動,データベース選択など煩わしい面もあります。

仕方無い,と言うことでVisualBasicでツールを自作し活用しています。

MySQL データ出力ツール

せっかくなのでこのツールのソースコードを公開します。公開することで手抜きしているコードを直すとか少しは見やすくするとか私に取ってもメリットがあると考え公開しています。

「SqlDataOut.zip」をダウンロード

ダウンロードし活用して頂く場合
ダウンロードしたらすぐにウイルスチェックして下さい。
実行ファイルは含まれていませんのでコンパイルする必要があります。
必然的に「VisualStudio」がインストールされている必要があります。
予め「MySQL Connector/Net」をインストールして下さい。
参照設定で「Mysql.Data」を選択して下さい。
CSVファイルは
数値以外はダブルコーテーション「"」で囲んでいます。
数値にカンマ「,」が含まれている場合,カンマが削除されます。
バグがあるかも知れません。
ツール使用でのいかなる損害も私は責任を負いません。

ツール制作にあたり,ちょっとした裏話があります。
当初,このツールで開始行を指定せずデータ取得すると,何故か必ず1レコード目のデータが取得出来ませんでした。ネットで散々調べても事例無し。もうお手上げ,原因不明,仕方ない,
昇順,降順で2回検索かけて1行足すか…
それもとネットのQ & Aにすがるか…
と思いつつ,そう言えばSQL文を考えていた際に参考にした書籍があった。ここにヒントは無いか? と見直しました。

【改訂第3版】SQLポケットリファレンス


この書籍のLIMIT旬(指定された行だけ取得)のところに下記記載があります。
「使用例 全体の5行目から3行だけを取得します。」
「SELECT * FROM for LIMIT 3 OFFSET 5  PostgreSQL MySQL」
「SELECT * FROM for 5, 3              MySQL」

この記述に従い,似たよう感じでSQL文を組みました。
「" limit " & startNo & "," & rowNo & ";"」

上記説明からしても,また普通に考えても1行目からの場合「startNo=1」となり,その前提でプログラムを書いていました。
で,試しに「startNo=0」としてみたところ,見事に1レコード目からデータを取得出来ました…
なんともトホホな話です。これだけで数日間散々悩みました。
プログラム的には,開始行の入力は1行目(1レコード目)=1を前提とし,内部で-1してあります。

|

« VB たかがソート,されどSort | トップページ | Oracle VBA/VB oo4o,ODBC,ADO 速度比較 »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: VB MySQLのデータをCSVファイルに出力するツール:

« VB たかがソート,されどSort | トップページ | Oracle VBA/VB oo4o,ODBC,ADO 速度比較 »