我的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
你能帮助我吗?
答案 0 :(得分:1)
您正在呼叫JurnalMy.first
,因此您只创建了第一条记录。您应该在attributes
上致电jurnal
。最好还是使用find_each而不是加载内存中的所有记录。
JurnalMy.find_each do |jurnal|
hash = {}
jurnal.attributes # ...
Jurnal.create hash
end