<< Prev Page Next Page >>

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


DBDesigner4ファイルからExcelの定義書を作成するツール

DBDesigner4→Excel定義書ツールDBDesigner4の保存ファイルを読み込んでExcelのDB定義書を作成するツールをHTAで作ったよ。

これがあれば、テーブルが100個以上あるデータベースからリバースエンジニアリングしてExcelの定義書が作れたりして便利嬉しい。

Excelのマクロに頼らない点も好感度高い(?)

なお、おまけ機能として、カラムのコメントを例えば

削除フラグ 0:通常 1:削除
みたいに書いてある場合に、
カラム論理名…「削除フラグ」
選択肢…「0:通常 1:削除」
と、分けて表記します。

で、一番苦労したのは、DBDesignerがXMLに保存したマルチバイト文字列をデコードする部分です。なんでUTF-8で保存してないのよぉ。ShiftJISのままでASCIIコード以外を\133とかエンコードした文字列を書き出してるのをADODB.StreamでコチョコチョしてJScriptで扱える文字列に…全然本質と違うとこで…

それから、XMLのDOMを読み込むとのにjQuery使ってます。HTML以外でもそこそこ使えて便利!

環境:Excel2003で確認。
ZIP形式ダウンロード


スポンサーサイト

大きなテーブルをmysqldumpでエクスポートしてWindows上のmysqlでレストアするとき(長っ)

何万行もある大きなテーブルをmysqldumpでバックアップすると、できたSQLファイルのINSERT文がめちゃくちゃ長くなってしまう。

これを、僕の手元のWindows版Mysqlで

mysql -u root -p database < dumpsql
とかやってレストアしようとすると
ERROR 2013 (HY000) at line 5915 in file: dump.sql': Lost connection to MySQL server during query
とかで怒られる。

その行番号の所を見ると、どうもINSERT文がものすごい長いところでコケてるみたいなので、INSERT文を短くしようと思った。

最初は簡単に、「),」を「); INSERT INTO テーブル名 VALUES 」に置換すればいいかなーと思ったんだけど、こうするとINSERTを何万回も発行することになってめちゃくちゃ処理が遅かった。

しかたないのでINSERT INTOの中身を50個ずつで区切るようにしてみたらなんとかうまくいった。というわけでRubyスクリプト。

Rubyテキにカッコ悪いところとかヘボいところとか指摘ぷりーず。あ、ファイル名はコマンドラインで指定すべきとか50がマジックナンバーとかそういうのはいいんで。


» Read More...

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。