mysql - 如何从 rake 任务建立连接?

标签 mysql ruby-on-rails ruby oracle rake

我需要创建一个 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语句之后选择表行?

最佳答案

通过使用 ActiveRecord::Base 生成的连接,您可以对连接到的任何数据库执行 SQL 语句。像这样:

connection = ActiveRecord::Base.establish_connection(
  :adapter  => "mysql",
  :host     => "faraway",
  :username => "myuser",
  :password => "mypass",
  :database => "somedatabase"
)
connection.execute('SELECT * FROM users')

一旦建立,连接也可以从 ActiveRecord::Base 类中引用。

ActiveRecord::Base.establish_connection(...)
ActiveRecord::Base.connection.execute(...)

关于mysql - 如何从 rake 任务建立连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31558459/

相关文章:

ruby-on-rails - 如何在 Ubuntu VPS 上运行的 Rails 应用程序中访问标准输出控制台

mysql - 使用 if 条件过滤 SQL 查询

MySQL 从一个表中返回不同的帐户,从另一个表中返回平均评分,所有这些都基于另一个表中的服务区域

php - 当用户在 PHP 中输​​入重复键时自动显示文本

作为 "pure"面向对象语言的 Ruby --- 与 Ruby puts 不一致?

ruby-on-rails - rvm + rails3 + gmaps4rails - acts_as_gmappable

ruby-on-rails - end_of_week 返回不同日期

mysql - 如何在 Twig 文件中显示行计数结果

javascript - Bootstrap 主题 js 在生产中不起作用,但在开发中起作用(Rails)

ruby-on-rails - 运行从 GitHub 下载的 Rails 应用程序 (database.yml)