2
1

More than 3 years have passed since last update.

MicrosoftAccess2003のデータをMySQL8に移行してみた

Posted at

はじめに

MicrosoftAccess2003のデータ(*.mdb) をMySQL8に移行してみたのでその備忘録として残しておきます。
データ移行は、「MDB Tools」でSQLファイルに変化後、データのインポートを行った。
※MDB Toolsは、mdbファイルからCSVファイルやSQLファイルに変換できるツールです(その他にも色んな機能があります)。

前提条件

・OS環境は、Virtualboxで稼働中のCentOS8.1です。以下、OS詳細情報となります。

# cat /etc/centos-release
CentOS Linux release 8.1.1911 (Core)

・Virtualboxのネットワーク設定は、「NAT」「ホストオンリーアダプター」で構成。

・OSの初期設定が完了していること。

・Mariadbがインストールがされていないこと。

・MDB Toolsのインストールは、Linuxbrew経由でおこなう。
ソースからのインストールは、以下をご参照ください。
https://github.com/brianb/mdbtools

手順概要

手順は、以下の順におこなっていきます。

(1)Linuxbrewをインストール
(2)MDB-Toolsをインストール
(3)MySQL8をインストール
(4)MySQL8にデータをインポート

(1)Linuxbrewをインストール

(1.1)Linuxbrewのインストールユーザの設定

▼「qiita」ユーザを作成

# useradd qiita

▼「qiita」ユーザのパスワードを設定

# passwd qiita

▼「qiita」ユーザにsudo権限を付与(末尾に追記)

visudo
qiita        ALL=(ALL)       NOPASSWD: ALL

▼「qiita」ユーザに切り替える

# su - qiita

※「Linuxbrew」のインストールは、一般ユーザでないと失敗する。

(1.2)Linuxbrewをインストール

▼Linuxbrewの必須パッケージをインストール

$ sudo dnf -y groupinstall 'Development Tools' && sudo dnf -y install curl file git

▼Linuxbrewをインストール

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

※「Warning:/home/linuxbrew/.linuxbrew/bin is not in your PATH」が表示されるが無視してよい。

▼Linuxbrew関連の設定を定義(末尾に追記)

$HOME/.bash_profile
export PATH=/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin:$PATH
export MANPATH=/home/linuxbrew/.linuxbrew/share/man:$MANPATH
export INFOPATH=/home/linuxbrew/.linuxbrew/share/info:$INFOPATH

▼設定ファイルの再読み込みを実施

$ source $HOME/.bash_profile

▼Linuxbrewバージョン確認

$ brew -v

※ここでバージョンが表示されればOK

(2)MDB Toolsをインストール

(2.1)MDB Tools インストール

▼MDB-Toolsをインストール

$ brew install mdbtools

▼「root」ユーザに切り替える

$ exit

▼MDB-Toolsのパスを設定

/etc/profile
export PATH=/home/linuxbrew/.linuxbrew/Cellar/mdbtools/0.7.1_3/bin/:$PATH

▼設定ファイルの再読み込みを実施

# source /etc/profile

※MDB-Toolsをインストールしたことで、以下のコマンドが使えるようになる。

# ls /home/linuxbrew/.linuxbrew/Cellar/mdbtools/0.7.1_3/bin/
mdb-array   mdb-header   mdb-parsecsv  mdb-schema  mdb-tables
mdb-export  mdb-hexdump  mdb-prop      mdb-sql     mdb-ver

(2.2)MDBファイルのバージョン確認

▼作業ディレクトリ「/tmp/mdb」を作成

# mkdir /tmp/mdb

▼FTPツールでMDBファイル「会員情報.mdb」を「/tmp/mdb」以下にコピー
※本環境では、「会員情報.mdb」をMySQL8に移行する想定で、記述します。

▼MDBファイルのバージョンを確認

# mdb-ver /tmp/mdb/会員情報.mdb

※MDBファイルのバージョンが出力される。

(3)MySQL8をインストール

▼既存にMariadb環境があれば以下を実施

# dnf remove mariadb-libs
# rm -rf /var/lib/mysql/

▼既存のMariadbモジュールを削除

# dnf -y module disable mariadb

▼MySQL8をインストール

# dnf -y install @mysql:8.0

▼バージョン確認

# mysqld --version

※MySQLのバージョンが8であること

▼MySQL8の起動・自動起動

# systemctl start mysqld && systemctl enable mysqld

▼MySQLのログインパスワード設定

# mysql_secure_installation

※パスワード以外の設定値は以下とする。
Remove anonymous users(匿名ユーザを削除するか)?:y
Disallow root login remotely(リモートからのrootログインを無効化にするか)?:n
Remove test database and access to it(テスト用のデータベースを削除するか)?:y
Reload privilege tables now(アクセス権のデータベースをリロードするか)? :y

▼MySQLのログイン確認

# mysql -u root -p

※ログインができればOK!!

▼MySQLから抜ける

quit

(4)MySQLにデータをインポート

(4.1)mdbファイルからSQLファイルを生成

▼エクスポートする前にテーブル構造を確認

# mdb-schema /tmp/mdb/会員情報.mdb
↓以下、出力結果
-- ----------------------------------------------------------
-- MDB Tools - A library for reading MS Access database files
-- Copyright (C) 2000-2011 Brian Bruns and others.
-- Files in libmdb are licensed under LGPL and the utilities under
-- the GPL, see COPYING.LIB and COPYING files respectively.
-- Check out http://mdbtools.sourceforge.net
-- ----------------------------------------------------------

-- That file uses encoding UTF-8

CREATE TABLE [会員テーブル]
 (
        [会員NO]                        Text (8),
        [名前]                  Text (60),
        [フリガナ]                      Text (60),
        [〒]                    Text (16),
        [住所1]                 Text (100),
        [住所2]                 Text (100),
        [TEL]                   Text (24),
        [生年月日]                      DateTime,
        [退会]                  Boolean NOT NULL,
        [DM]                    Boolean NOT NULL
);

※「mdb-schema」コマンドを用いることでテーブル構造の確認ができます。

▼「会員情報.mdb」内にある「会員テーブル」のデータをSQLファイルにエクスポート

# mdb-export -D "%Y-%m-%d %H:%M:%S" -H -I mysql /tmp/mdb/会員情報.mdb "会員テーブル" > /tmp/mdb/MemberTable.sql

※mdb-exportコマンドで、mdbファイルからSQLファイルを生成している。(CSVファイルで生成することも可能)
※上記コマンドで使用したオプションは、以下のとおり。

オプション 意味
-D 日付書式を指定
-H 出力時にカラム名を除去して出力
-I mysql sqlファイルで生成(INSERT文)

(4.2)データベース作成/環境確認

▼データベースに接続

# mysql -u root -p

▼データベース「qiita」を作成

CREATE DATABASE qiita;

▼データベース「qiita」に切り替える

use qiita

▼現在の文字コードを確認

show variables like "chara%";

+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8mb4                    |
| character_set_connection | utf8mb4                    |
| character_set_database   | utf8mb4                    |
| character_set_filesystem | binary                     |
| character_set_results    | utf8mb4                    |
| character_set_server     | utf8mb4                    |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.02 sec)

※本環境では、上記であればOKとする!!

(4.3)テーブル作成/データのインポート

▼手順4.1で確認したテーブル構造をもとにテーブルを作成

CREATE TABLE `会員テーブル`
 (
        `会員NO` VARCHAR(510),
        `名前` VARCHAR(510),
        `フリガナ` VARCHAR(510),
        `〒` VARCHAR(510),
        `住所1` VARCHAR(510),
        `住所2` VARCHAR(510),
        `TEL` VARCHAR(510),
        `生年月日` DATETIME,
        `退会` Boolean NOT NULL,
        `DM` Boolean NOT NULL
);

▼作成したテーブルのテーブル構造を確認

show columns from `会員テーブル`;

▼sqlファイルのインポートを実施

source /tmp/mdb/MemberTable.sql

▼データインポート後の確認

SELECT * FROM `会員テーブル`;

※ここでデータが表示されていれば完了!!

最後に

PostgreSQL12への移行はこちらを参考に
MicrosoftAccess2003のデータをPostgreSQL12に移行してみた

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1