اذهب إلى المحتوى

السؤال

نشر

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

Recommended Posts

  • 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.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...