アドレス帳のデータベース移行の下調べ

(このページは現在進行形・試行錯誤中のメモ書きなので、内容が適切かどうか確認しておりません。あしからず)

ハガキの宛名印刷には Access の住所録のデータを Word で印刷という方法をとっています。データベースは Access 95 から 2000 のころのサンプルを手直ししながら使っているのですが、これだけのために Access 付きの Microsoft Office を購入するのももったいないですし、それ以上に Windows と MS Office というプラットフォームに制限され続けるのもおもしろくありません。

フリーのデータベースというと、WordPress で使っている MySQL、日本でユーザが多いという PostgreSQL、ファイルで組み込めて PHP にも含まれる SQLite、OpenOffice などの BASE (中身は Java の HSQLDB) といったところでしょうか。

WordPress を利用しつつ、自分で使いやすいように作ればいいように思うのですが、まずはデータベースと SQL をおさらい — 勉強しなおしです。Access のデータベースの中身をそのまま SQLite に移行することにします。ちょっと触るだけなら、サーバ不要のデータベースがよさそうですし、Mozilla も使っていますしね。

Windows のシェル用バイナリをダウンロード。解凍すると sqlite3.exe という単独の実行ファイルになっています。日本語の解説は、

一応、DLL もダウンロード。C:\Windows\System32\ に sqlite3.dll をコピー。(この DLL がなくても ODBC ドライバーは動く)

Access からエクスポートできる種類の中に ODBC データベースがあります。SQLite のドライバがあればエクスポートできます。

日本語解説のリンク先である配布元の文章を読むと、Windows が 64 bit でも、使うソフトが 32 bit なら 32 bit を使うように書いてあるので、32 bit 版の sqliteodbc.exe をダウンロード、実行(インストール)。

コントロール パネル\システムとセキュリティ\管理ツール から「ODBC データ ソース アドミニストレーター (32 ビット)」 を起動。「システム DNS」に「SQLite3 Datasource 32 ビット SQLite3 ODBC Driver」ができています。(…たぶん。いろいろな操作を実行したあとに確認したので、この時点では違うかもしれません。一度なにかを設定すると、削除したつもりでも、設定がどこかに残って、次に使われたりするので、初期の状態がわからなくなりました。具合が悪かったら、このへんをいじるといいはず…)

手元の Access 住所録 を Access 2010 で開きます。テーブルを開きます。テーブルは一つだけでした。リボン「外部データ」→「エクスポート」→「その他」→「ODBC データベース」にエクスポート。

ダイアログで、「住所テーブルのエクスポート先」はデフォルトの「住所テーブル」(ODBC データベース)のままでもいいのですが、文字コードが気になるので「mxJushoTable」(ODBC データベース)に変更。

「データ ソースの選択」ダイアログで、「コンピューター データソース」タブ、データソース名「SQLite3 Datasource」を選択、「OK」。そうすると、Access ファイルと同じディレクトリに 「sqlite.db」 というファイルができます。テキストエディタで無理やり開くと、日本語部分は概ね UTF-8 になっているようです。Access が UTF-8 なのか、SQLite3 ODBC ドライバが UTF-8 にしているのかは不明。

sqlite3.exe で sqlite.db を開けます。 .output でファイル名を指定して .dump すると、中身が SQL で書かれたテキスト ファイルに落ちます。これは UTF-8 でした。簡単なヘルプは .help で。cf.  Command Line Shell For SQLite (コマンドの解説)

UTF-8 がどうこう言っているのは、ODBC ドライバに日本語が通るパッチを書いている方がいるからです。ただし、それがちょっと古い(2008/05/24, 2009/08/23)ので、かえって適用しないほうが無難かなと思いました。すくなくとも、私が現在 対象にしているデータベースに関してはドライバの日本語化を考えずに済みそうな感触です。

(2014/1/8)