ひさびさに11g

mysqlのデータを11g(というかexadb)にのせるために、ほんとに久しぶりにoracleを触った。

全然覚えてなかったが、、、mysqlと同様、
行指向、トランザクション、インデックスなど、大体は同じだっていうのは分かるんだけど。。

DDLの作り方

orale to mysqlはよく見つかるんだけど、 mysql to oracleはなかなか見つからないのねw
oracle謹製のSQLDeveloperを使えばmysql, SQLServer, postgresなど移行できますが、
最初からmysqlのドライバはいってなかったし、DDLが欲しかったんだよね。インポートでなく。
(インポートしてからCREATE TABLE文だせばよいが、諸事情で先にインポートすることができなかった)

なのでSQLwaysっていうソフトを使って、MySQLDDLOracleDDLを生成した。
(今回は試用版を利用させてもらった)
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)でデータをまとめてインポート | 渋谷生活


以上。今のところはうまくいった。。。


おぼえてないこと

  • sqlplus / as sysdba でログインしてつかってる。多分これはだめだろ、まぁローカルだからいいけど。
  • ユーザーの作り方、認証方法など(SQLServerみたいにOS認証があるぽいな。。そこらへん全然MySQLとは違う)
  • オブジェクトとか
  • テーブルスペース
  • データ型 (MySQLでよくやる tinyintとかintとかだめ。あとunsignedはどうなるんだろ)