ひさびさに11g
mysqlのデータを11g(というかexadb)にのせるために、ほんとに久しぶりにoracleを触った。
全然覚えてなかったが、、、mysqlと同様、
行指向、トランザクション、インデックスなど、大体は同じだっていうのは分かるんだけど。。
DDLの作り方
orale to mysqlはよく見つかるんだけど、 mysql to oracleはなかなか見つからないのねworacle謹製のSQLDeveloperを使えばmysql, SQLServer, postgresなど移行できますが、
最初からmysqlのドライバはいってなかったし、DDLが欲しかったんだよね。インポートでなく。
(インポートしてからCREATE TABLE文だせばよいが、諸事情で先にインポートすることができなかった)
なのでSQLwaysっていうソフトを使って、MySQLのDDL→OracleのDDLを生成した。
(今回は試用版を利用させてもらった)
http://www.ispirer.jp/products
INDEXの作成
INDEXも先に作成した。だが一点気になったのが、違うテーブルであっても同一のインデックス名(オブジェクト名?)が利用できなかったこと。
MySQLだったら、
CREATE INDEX idx_user_id ON table_name(user_id);
みたいなのがいろんなテーブルに作れたが、Oracleでは無理だった。やり方がおかしかったのかな。
MySQLデータのexport
TSVでEXPORTしておく。mysql -u(username) -p(password) (database) -B -N -e 'select * from (table);' > data.tsv
Oracleでimport
sqlldrをつかってインポートするSQL*Loader(sqlldr)でデータをまとめてインポート | 渋谷生活
以上。今のところはうまくいった。。。