いわゆる MS Access のデータベースは linux で開こうとするととても難しく、これまでは完全にはできませんでした。
しかし、最近になってやっとわかったのでメモします。
.mdb という拡張子を持つ MS のデータベースはとても特殊で、特にメモ型というタイプのフィールドを読み込むことができませんでした。
しかし以下のようにすれば完全に .mdb のデータを mysql に移行することができます。
環境
こんな構造です。
mdbtools のインストール
まずは mdbtools をインストール。
データベースの構造を確認します。
以下のように出力されます。
2つのテーブルのうちで session_info というテーブルを mysql に移行します。
しかし、このクエリを mysql 上で実行してもエラーになります。
.mdb のテーブルをエクスポート
mmr.mdb の session_info をエクスポートします。
37,000 行・27項目のデータが一瞬でエクスポートされます。
テーブル作成
mysql にログイン。
データベースを作成します。
データベース変更。
最初のテーブル情報から以下のようなクエリを作成してテーブルを作成します。
データのインポート。
シェルスクリプトで実行
テーブル情報だけは手動でおこなう必要がありますが、プロセスが面倒なのでテーブル以外を自動的に実行します。
mdb2mysql.sh mysqlset.ddlデータベース名やカラム名を変更
python で作ったプログラムでは、データベース名:es、テーブル名:mmr、フィールド名もオリジナルとかなり異なっているのでそれらを変更します。
mdb2mysql.sh を以下のように変更。
mdb2mysql.shrename.ddl を追加します。
rename.ddlこのシェルスクリプトが動くためには、/etc/mysql/my.cnfの最後に以下を追加する必要があります。
/etc/mysql/my.cnf