• 0

كيف أنقل بيانات من قاعدة بيانات قديمة إلى أخرى جديدة على تطبيق Rails؟

لدي قاعدة بيانات قديمة معدّة على Mysql والآن أنا بصدد القيام بأخرى جديدة على PostgreSQL، وأريد نقل البيانات الموجودة في قاعدة البيانات القديمة إلى الجديدة لكن المشكل في عدم توافقا الأسماء في كلتا القاعدتين، هل من طريقة لحل المشكل؟ بطريقة احترافية؟

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

عليك بتغيير نوع الاتصال بقاعدة البيانات، فكما تعلم rails تقبل الاتصال مع أكثر من نوع من قواعد البيانات:

development:
  adapter: postgresql
  .....

test:
  adapter: postgresql
  .....

legacy:
  adapter: mysql2
  encoding: utf8
  database: your_old_mysql_db
  username: root
  password: 
  host: localhost
  port: 3306

عليك إضافة mysql2 إلى ملف Gemfile.

لكي تتمكن من الولوج إلى المستخدم في قاعدة البيانات القديم يجب استعمال LegacyUser:

# app/models/legacy_user.rb 
class LegacyUser < ActiveRecord::Base
  establish_connection :legacy
  self.table_name = "whatever_your_my_sql_user_table_name_is"
end

في ملف import.rake :

# lib/tasks/import.rake
namespace :import do

  desc "Import Users"
  task users: :environment do

    puts ""
    puts "Importing Legacy Users:"

    LegacyUser.find_each do |lu|
      print "#{lu.id} - #{lu.first_name}"
      u = User.new
      u.email = lu.email
      u.first_name = lu.first_name
      u.last_name = lu.last_name
      if u.save
        puts "... saved"
      else
        puts "... bad: #{u.errors.full_messages.join(',')}"
      end
    end
  end
end

في الأخير استعمل الأمر في الطرفية لتفعيل التغييرات التي قمت بها.

rake import:users

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن