• 0

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

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

1 شخص أعجب بهذا

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


رابط هذه المساهمة
  • 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

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


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

يمكنك نقل قاعدة بيانات مهما كان نوعها إلى postgresql بإستعمال pgLoader وستجد الطريقة بالتفصيل في الرابط ادناه.
النقل من قاعدة بيانات غير postgre إلى postgre.

ولكن توجد طريقة أو لنقل خدعة أخرى لنقل البيانات من قاعدة إلى أخرى. لنفترض أنك على دراية كاملة بكيفية الإتصال بقواعد البيانات وإعدادات ملف database.yml ولديك بالفعل قاعدة بيانات رقم 1 وتريد نقل البيانات إلى قاعدة بيانات رقم 2.

أولا قم بسحب هذه البيانات إلى ملف seeds.rb عبر إستخدام الجوهرة 

gem 'seed_dump'

ثم وبكل بساطة قم بتشغيل الأمر:

rake db:seed:dump

وسيتم حفظ جميع البيانات في ملف الـ seeds

يمكنك بالتأكيد حفظ جداول معينة دون الأخرى أو تحديد عدد السجلات التي تريد سحبها كالتالي:

rake db:seed:dump MODELS=User LIMIT=1

وبعد أن يتم ذلك، اتصل بقاعدة البيانات رقم 2 وشغل الأمر:

rake db:seed

بالتأكيد يجب ان تكون أسماء الجداول والحقول متوافقة، ولكن يمكن تغيير هذه الأسماء من ملف seeds.rb بعد سحبها من قاعدة البيانات رقم1.

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


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

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

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

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


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

تسجيل الدخول

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


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