内視鏡のデータベースは mmr.mdb というもので、いわゆるアクセスというオフィスファミリーのデータベースです。
これではいかにも貧弱なので、データを mysql 8.0 に移行します。
Oracle は mysql のハードルをどんどん上げてきて、そのため素人にはどんどん使いにくくなってきているので mysql の 8.0 なんて使いたくないのですが、linux mint 20.3 に mysql をインストールするとデフォルトで 8.0 になります。
*.mdb からエクセルに書き出す
*.mdb をアクセスで開いて目的のテーブルをエクセルに書き出します。
csv というオプションはありませんでした。
そうして、エクセルで必要な部分だけにしてから、それを csv で出力します。
mysql へのインポート
mysql 側でデータベースを作成し、構造も決定しておきます。
普通であれば以下のようにしてインポートできるはずですが、
LOAD DATA LOCAL INFILE "mmr01.csv"
INTO TABLE mmr
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';
いろいろとエラーが出ます。
ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
local-infile を ON に設定する
mysql 8.0 では「LOAD DATA LOCAL INFILE
」はデフォルトでは無効になったようで、手動で有効にする必要があります。
mysql>
SET GLOBAL local_infile=on;
mysql ログイン時に local-infile を有効にする
再度 csv をインポートしようとすると以下のようなエラーが。
ERROR 2068 (HY000): LOAD DATA LOCAL INFILE file request rejected due to restrictions on access.
次のようにして、ログイン時に local-infile を有効にします。
mysql -u root -p --enable-local-infile
そしてインポート
LOAD DATA LOCAL INFILE "mmr01.csv"
INTO TABLE mmr
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"';
やっとできました。
今後も Oracle は mysql のハードルをどんどん上げ続けるでしょうね。
どこまでついていけるやら。