如何将SQL文件导入Rails数据库?

时间:2011-12-01 14:07:36

标签: sql ruby-on-rails

我有一个.sql文件,我想使用Rake任务加载到我的Rails数据库中。我怎么能这样做?

3 个答案:

答案 0 :(得分:41)

轻松的方式

这适用于简单的情况。

ActiveRecord::Base.connection.execute(IO.read("path/to/file"))

从2006年开始在Ruby On Rails mailing list上找到解决方案(但在2011年的Rails 3.1上仍有效)。

脚注

  • This related question暗示了这个解决方案,但拒绝了大量进口。我想明确地展示它,因为它适用于较小的。
  • 我尝试导入的文件包含LOCK TABLES后跟插入内容。数据用于MySQL数据库。 Mysql2表示在删除锁定和解锁语句之前,它的SQL语法错误无效。

答案 1 :(得分:38)

最简单的方法:

bundle exec rails db < $SQL_FILE

示例:

bundle exec rails db < my_db.sql

答案 2 :(得分:15)

在MySQL上,这给了我一个语法错误。将sql拆分为语句使其有效。

sql = File.read(sql_file)
statements = sql.split(/;$/)
statements.pop # remote empty line
ActiveRecord::Base.transaction do
  statements.each do |statement|
    connection.execute(statement)
  end
end