我有一个.sql
文件,我想使用Rake任务加载到我的Rails数据库中。我怎么能这样做?
答案 0 :(得分:41)
这适用于简单的情况。
ActiveRecord::Base.connection.execute(IO.read("path/to/file"))
从2006年开始在Ruby On Rails mailing list上找到解决方案(但在2011年的Rails 3.1上仍有效)。
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