将数据从mysql导入postgresql

时间:2015-10-21 04:14:19

标签: ruby-on-rails-4

我的ruby应用程序中有2个模型(jurnal和jurnal_my),我需要将数据从mysql导入到postgresql。

这是我的方法:

jurnal_my.rb

  establish_connection "mysql"
  self.table_name = "jurnal"

  def self.import_from_mysql
    JurnalMy.all.each{|jurnal|
      hash = {}
      JurnalMy.first.attributes.delete_if{|attr|%w(ID CREATED_AT UPDATED_AT).include?(attr)}.map{|case_attr|case_attr}.each{|hash_attr|
        hash = hash.merge(hash_attr[0].downcase => hash_attr[1])
      }
        Jurnal.create hash
    }
  end

的database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  username: adit
  password: xxxxxxx
  pool: 5

development:
  <<: *default
  database: portalpos_development

mysql:
  adapter: mysql2
  encoding: utf8
  username: root
  password: xxxxxxx
  database: app

test:
  <<: *default
  database: portalpos_test

当我尝试将数据导入postgresql时,它正在运行。但结果是错误的。 mysql中的数据日期:

J01
J02
J03 

postgresql中的数据jurnal(结果):

J01
J01
J01

你能帮助我吗?

1 个答案:

答案 0 :(得分:1)

您正在呼叫JurnalMy.first,因此您只创建了第一条记录。您应该在attributes上致电jurnal。最好还是使用find_each而不是加载内存中的所有记录。

JurnalMy.find_each do |jurnal|
  hash = {}
  jurnal.attributes # ...
  Jurnal.create hash
end