テーマ:SQLite

SQLite ODBC ドライバ 0.83 日本語対応版

半年以上も放置していたのが気になっていたので。 本家の SQlite ODBC ドライバはどんどんバージョンアップしているし。 http://www.ch-werner.de/sqliteodbc/ このあたりで、ちょっと気合を入れて、最新の sqliteodbc-0.83.tar.gz を日本語対応させてみた。 インストー…
トラックバック:0
コメント:2

続きを読むread more

SQLite 用 ODBC ドライバのテスト

前も同じ内容を書いたかも知れないけれど、その頃とは間違いなくソフトウェアのバージョンが異なっているので、敢えてこれを記事にしてみた。 私の SQLite 3 用 ODBC ドライバ(日本語対応版)のテストの仕方。OpenOffice.org Base 用。 ODBCドライバ(日本語対応版)のインストールまで完了していることが前提。 …
トラックバック:0
コメント:2

続きを読むread more

sqlite3odbc.dll のコンパイル手順

メリークリスマスと同時に公開するつもりだった sqlite3odbc 日本語対応最新版が、結果的にお正月リリースになってしまった。その原因は、sqlite3odbc.dll のコンパイルに想像以上に手間取ったため。 なので、同じ愚を今後繰り返さないために、ここにコンパイル手順をメモしておくことにする。 コンパイルには今回は cy…
トラックバック:0
コメント:0

続きを読むread more

SQLite の面白さ(24) ODBCドライバをアップデート

以前、SQLite 用の ODBC ドライバの日本語対応版を作ったのだが、その後、SQLite も微妙にマイナーバージョンアップし、また、本家の sqlite3odbc もバージョンアップしたので、改めて、最新のバージョンの sqlite3odbc をベースにした日本語対応版を作ってみた。 インストール方法は以下の通り。 まず、…
トラックバック:0
コメント:5

続きを読むread more

MySQL と SQLite の差を体感

とうとう SQLite では手に負えない案件が生じてしまった。 データの件数は40万件程度。先日は400万件を扱って無事だったので、単にデータ件数だけの問題ではなく、インデックスだとか、テーブル設計だとかの総合的な問題だと思われる。 状況は以下のとおり。 元々は COBOL で設計してあった横に長~いテーブル。1レコード1KB…
トラックバック:0
コメント:0

続きを読むread more

ネットの情報を鵜呑みにして痛い目にあった話

2GB ほどの大きさの SQLite の DB があって、こいつを MySQL に移行することにした。移行に際して、SQLite から CSV 形式でデータを取り出そうとして Google 先生にお伺いを立てたところ、こういうページが見つかった。 http://detail.chiebukuro.yahoo.co.jp/qa/qu…
トラックバック:0
コメント:0

続きを読むread more

Google リテラシー

私が本を読んでいると、優秀な後輩がよくこう言っていた。「Kakiharaさん、そんな必死になって勉強する時代じゃないですよ。今は問題の解き方をいかに素早くGoogleで検索できるかが重要な時代です」 そりゃ、おっしゃる通りだと、いつでも思っている。だけれども、私のような昭和生まれだと、なかなかGoogleで検索するのに適切なキーワード…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(23) ODBCドライバをさらに改造した

先日、「SQLiteの面白さ(11) ODBCドライバを改造した」で紹介した日本語対応のSQLite3用ODBCドライバについて。 本日、このドライバをさらに改造し、日本語対応部分を拡充させた。 MS Access のパススルークエリーで日本語のテーブル名やカラム名を使っても一応機能させることができる。 ドライバ公開のURLや…
トラックバック:1
コメント:0

続きを読むread more

SQLiteの面白さ(22) 日本語のカラム名を使っていると...

業務でSQLiteを使用するときは、他のユーザーとの妥協で、カラム名には日本語を使うことがある。「受験番号」とか「点数」とか、「勤務先電話番号」とか。どうせ、AccessからODBC経由で参照するだけなのだから、これで大きな問題になることはない。ただ、メンテナンス担当の私が少し苦労をすればいいだけだ。 例えば、クエリを発行するたびに、…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(21) こういうのは苦手っぽい

色々とテストしていると、SQLite の苦手な処理もいくつか見えてきた。機能が少なすぎて大規模開発に向かないというのは最初から分かっていたことだから、最初からそういう用途に使わなければいいとして、単なる軽量アプリとして考えても弱点っぽいものがある。 PCを起動して、一発目のクエリーがどうしても遅い。いくらインデックスを使っても、結…
トラックバック:0
コメント:0

続きを読むread more

「SQLiteの面白さ(20) デスクトップツール発見」について

「SQLiteの面白さ(20) デスクトップツール発見」について これも Resource Hacker でフォント情報をいじってやれば日本語の文字化けが直るかと思って試した。が、どうやらこいつは Qt で開発されているらしく、一般的なWin32アプリケーションのようなリソース情報は持ち合わせていないようだった。 今すぐに Qt の…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(20) デスクトップツール発見

SQLite Database Browser というツールが見つかった。 http://sqlitebrowser.sourceforge.net/ 一応、GUI ツールということでいいのだろうか。 カラム名に日本語を使ったら文字化けしてしまった。が、別途コマンドプロンプトからsqlite3.exeを起動して .schema…
トラックバック:1
コメント:0

続きを読むread more

SQLiteの面白さ(19) JOIN機能にくせが

SQliteを使っていて、他のRDBMSと微妙に違いを感じるのがJOIN機能だ。今日、2点ほどくせが見つかった。 まずは、RIGHT JOIN について。 本家サイトの記事 http://www.sqlite.org/lang_select.html によると、RIGHTJOIN が使えそうな気がするのだが、実際に SELECT …
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(18) 大量データのインポートに際して

テーブルに大量のデータをインポートする際にはまずインデックスを削除するのが当たり前、なのだが、今となっては誰にそれを教わったのかよく思い出せない。書籍などを見ても、あまりこのあたりのテクニックは書かれていない様子だ。 Accessしか使わない人にはよく分からないかも知れないが、RDBのテーブルにインデックスがついたままだと、データ…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(17) 複数列のサブクエリ

MySQLなんかでたまにやる SELECT * FROM t1 WHERE (col1, col2, col3) = (SELECT col1, col2, MAX(col3) FROM t1); というような複数列のサブクエリを、SQLiteでもできないかと思い、試してみた。 col1、col2に生徒の成績関連のデータが入ってい…
トラックバック:0
コメント:0

続きを読むread more

「SQLiteの面白さ(11) ODBCドライバを改造した」について

「SQLiteの面白さ(11) ODBCドライバを改造した」について 先日、私の改造したODBCドライバだと、ODBC設定のダイアログで、日本語のフォルダ名やファイル名が文字化けしてしまうのが、今日になって気になり始めた。 調べてみると、単にダイアログに使用しているフォントが英字フォントであることが原因であるだけの様子。 なので本…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(16) あらためてインデックスの大切さを知る

これまでMS-Access、MySQLなどを使う機会は多々あったのだが、データベースのインデックスに関して、深く考えたことはあまりなかった。頻繁に検索をかけるカラムにインデックスを作っておくと速くて便利だというくらいの認識だった。 それが今回、300万件を超えるデータを扱ってみてわかったのだが、「適切にインデックスを作成しておかないと…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(15) WindowsとLinuxと

SQLiteはWindows用もLinux(*NIXと言うべきか?)用もある。同じソースをコンパイルしているのだから、性能はともかく、機能はOS依存部分を除いてほぼ同じになっている、はずだ。というのを簡便に確認してみた。 Windows XP上と、Debian GNU/Linux上で、同じSQL文を使ってテーブルを作成し、同じCSVデ…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(14) 日本語のカラム名では問題が

日本語のカラム名を設定したSQLiteのデータベース運用を始めて1日。とりあえず、今までMS-Accessしか使っていなかったユーザーには概ね好評だ。というか、このようなユーザーにはカラム名が日本語でないと受け入れてもらえない。ところが、既に問題が生じ始めた。 職場では基本的にPCはWindows XPが使われている。Window…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(13) 日本語のカラム名にチャレンジ

SQLiteは文字コードとしてUTF-8を使える、というので、中のデータだけでなく、カラム名にもUTF-8で日本語を使ってみた。今のところ正常に動作している。ODBC接続でも、ちゃんと日本語のカラム名を持ってくることが出来ている。クエリーも正常に動作している。 重要な案件に使うのはちょっと怖い気がするけれど。
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(12) 実運用開始

業務上の守秘義務があるので仔細に触れることはできないのだが、拙作のODBCドライバを用い、350万件ほどのデータを格納したDBの実運用を開始した。 このDBで管理しているのは、過去の試験実績。これまでは、これらのデータは100個近いmdbファイルに分割・格納されていた。そして、欲しいデータがあった場合、人間があたりをつけて適当な順でm…
トラックバック:0
コメント:0

続きを読むread more

「SQLiteの面白さ(11) ODBCドライバを改造した」について

「SQLiteの面白さ(11) ODBCドライバを改造した」について コメントにExcel VBAで全然ダメですなどと書き込まれてしまったので、どのようにダメなのか自分で試してみることにした。単にExcel VBAといってもDBへのアクセスの仕方はバリエーションがありすぎて、どのようにすればダメなのかさっぱり見当がつかない。とりあえず …
トラックバック:0
コメント:2

続きを読むread more

SQLiteの面白さ(11) ODBCドライバを改造した

結局、SQLite用のODBCドライバを自力で改造して日本語が通るようにした。MS AccessおよびOpenOffice.org Base で動作を確認した。ついでにこの場で公開する。用意してあるのはSQLite3用のドライバのみ。またお約束で、UTF8とShift-JISの間の文字変換は完璧ではないので、化ける文字がある点には注意し…
トラックバック:0
コメント:4

続きを読むread more

SQLiteとMySQLのODBCドライバの機能を比べる

ともにオープンソースなので、ソースからSQLiteとMySQLのそれぞれ用のODBCドライバを比較してみた。ざっと眺めただけなのだが、MySQLのほうがより多くの機能を実装していることがわかる。SQLite用のODBCはSQLSetPosを始め、まだ多くの機能がNOT IMPLEMENTED(未実装)になっている。OpenOffice.…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(10) ODBCの問題か?

暦どおりに出社し、早速Accessを起動してSQLiteとの接続を試した。NO_WCHARにセットしたODBCドライバでパススルークエリを発行し、テーブルを作成してみたところ、やはりどうしても日本語のカラム名を受け付けそうで受け付けない。よく分からないのだが、ODBCドライバがSQLite3へとデータを書き込む際と、読み取る際とで文字コ…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(9) MySQLも土俵にあげる

手元のMySQLがVer 3の時代から安定して稼動していたので、かえって不勉強になっていた。調べたら、最近のMySQLのWindows版では名前付きパイプが使えるらしい。さっそくMySQL Ver5.0のnoinstall版をダウンロードして試行錯誤しながら動作を確認してみた。 名前付きパイプでのデータベースサーバー起動は bi…
トラックバック:0
コメント:1

続きを読むread more

SQLiteの面白さ(8) sqlite3odbcまわりの話はここで一旦休憩

やはり、Accessがないとテストがうまくできない。手もとのOpenOffice.org Baseでは、ODBC経由でSQLiteを使おうとしてもうまくいかなかった。sqlite3odbcの文字コードまわりの処理がどうも完璧ではないようだ。カラム名は表示できても中のデータは表示できない(エラーとなって、文字化けどころではなくテーブル自体…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(7) sqlite3odbcのコンパイル方法

Visual C++ 6.0でsqlite3odbcをコンパイルする方法がわかった。わかったといっても、sqliteodbc-0.77とsqlite-3.5.8の組み合わせ限定になる。また、ここまでして、手でsqlite3odbcをコンパイルしたがる人がどれだけいるかも分からないが、とりあえず自分のためのメモという意味合いも含めてここに…
トラックバック:0
コメント:0

続きを読むread more

SQLiteの面白さ(6) 急に再開

sqlite3odbcのコンパイルに成功したようだ。Makefileやらソースコードやら、あちこちいじってしまったので、手順をまとめなおすのに時間がかかりそうだが、とりあえず一歩前進できそうだ。コンパイル手順はまた日をあらためて公開したい。 元々はSQLの基本を勉強しようとして始めたこの企画だが、妙なところで、SQLiteという個別ア…
トラックバック:1
コメント:0

続きを読むread more

SQLiteの面白さ(5) ここで一旦休憩

とりあえず、SQLiteのコンパイルまでは成功した。MinGWとMSYSの組み合わせで環境を作り、そこでコンパイルしたところ、無事、SQLite3.exe、SQLite3.dllを作成することができた。しかし、残念なことに肝心のsqlite3odbcのコンパイルはとうとう今日中には成功しなかった。sqlite3odbcに含まれているMa…
トラックバック:1
コメント:0

続きを読むread more