【发布时间】:2015-10-12 01:15:49
【问题描述】:
我需要创建一个 rake 任务,从 MySQL 数据库中获取表行,解析数据,然后插入到 Oracle 数据库中。数据库位于两个不同的主机上。
我目前的尝试:
namespace :import_from_mysql do
class MySQLConnection < ActiveRecord::Base
self.abstract_class = true
establish_connection({
:adapter => 'mysql',
:host => 'xxx.xxx.com',
:database => 'sample_database',
:username => 'username',
:password => 'password'
})
end
class MySQLTable < MySQLConnection
self.table_name = "users"
self.primary_key = "id"
self.inheritance_column = "something_unique_here"
end
desc "Parse data before inserting to oracle database"
task :insert_to_oracle => :environment do |t|
puts "Rake task has begun...\n\n"
puts "Parsing data from MYSQL...\n\n"
MySQLTable.establish_connection
puts "Rake task has completed!"
end
end
但是 MySQLTable.establish_connection 建立了到我的本地数据库的连接,即使我正在尝试连接到 mysql_adapter。
当我尝试使用以下命令建立连接时,我能够连接到 MySQL 适配器,但我不知道在建立连接后如何访问我的表:
ActiveRecord::Base.establish_connection({:adapter => "mysql", :database => "sample_database", :host => "xxx.xxx.com", :username => "username", :password => "password" })
知道为什么它一直连接到 sqlite 吗?以及成功建立与mysql的连接后,如何在MySQLTable.establish_connection语句后选择表行?
【问题讨论】:
-
您打算使用其中一种活动记录模型进行查询吗?
-
直接执行sql命令就好了。 @adamliesko
-
那么,看看下面的答案
标签: mysql ruby-on-rails ruby oracle rake