簡體   English   中英

從舊的MySQL數據庫遷移數據

[英]Migrate data from old MySQL database

我最近將Java EE Web應用程序(在MySQL數據庫上運行)重寫為Rails 3.1。 現在的問題是新應用程序的數據庫模型與舊模型不一樣,因為我添加,刪除並重命名了一些屬性 數據庫表名稱也不同。

有沒有辦法遷移這些數據? 我能想到的唯一方法是編寫一個包含許多ALTER TABLE和CREATE TABLE語句的存儲過程,以將數據庫更新為新模型。

提前致謝。

解決方案

我最終在mysql存儲過程中使用了INSERT..SELECT語句來遷移數據。 插入到new_schema.new_table中,從old_schema.old_table中選擇。 我現在正在考慮做一個Rake任務來調用該過程並做其他事情。

唯一的方法是編寫一個腳本,該腳本從舊數據庫中獲取數據並將thme插入新數據庫中。 或者,您可以通過某種方式連接到兩個數據庫,然后進行一些選擇和插入查詢,例如

 insert into new_db.table as select old_db.table.field1, ....

要么

 insert into new_db.table (field_1, field_2) values (select old_db.table.field_1, ...)

無論如何,這都是手動過程,如果可以通過腳本自動進行某種程度的擴展

可以使用MySQL的information_schema在Rails控制台中嘗試使用Rails和一些sql來代替Store過程

sql = ActiveRecord::Base.connection()
old_tables = sql.execute "select table_name from information_schema.tables where table_schema = your_old_schema"
res.each do | old_table|
  old_fields = sql.execute "select distinct column_name, data_type from information_schema.columns where table_name='#{old_table}' and table_schema='your_old_schema'"
  new_fields = sql.execute "select distinct column_name, data_type from information_schema.columns where table_name='#{old_table}' and table_schema='your_new_schema'"
  #compare fields and so on...
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM