PostgreSQLで運用していたデータをMySQLへ移行する必要が出てきてしまったので、少しでもラクに移行できないか考えてみた。
前提条件として
というテーブル構成。
まずダンプファイルを作る
pg_dump --inserts --column-inserts -f /tmp/psql.sql [DB名]
SQLファイル先頭のSETコマンドを削除
ALTER TABLE [テーブル名] OWNER TO [ユーザー名] を削除
CREATE SEQUENCE・・・ を削除
ALTER SEQUENCE・・・ を削除
ALTER TABLE ONLY・・・ を削除
テーブル定義を置換
データを置換
SERIAL型だったカラムに AUTO_INCREMENT 属性を付与
SERIALの最大値を AUTO_INCREMENT の次の値へ変換 (テーブル名をうまく抜き出せるように正規表現を書いてね)
検索正規表現: SELECT pg_catalog.setval\('(.+)_[^_]+_id_seq', (\d+), true\);
置換正規表現: SET @num = \2+1; SET @sql=CONCAT('ALTER TABLE \1 AUTO_INCREMENT=',@num); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt;
あとはエラーが出なくなるまでガンバレ!
タグ : MySQL,PostgreSQL,インポート,ダンプ
2015/08/24 16:23:44 | Trackbacks (0) | Comments (0) | Technology
URL : https://www.ana-kutsu.com/mt/mt-tb.cgi/619
« Raspberry PiでSDカードが論理破損した時に少しでもファイルを救出するコマンド | Top | 2015年買ってよかったものランキング »