Как импортировать файл SQL в базу данных Rails?

У меня есть файл .sql, который я бы хотел загрузить в мою базу данных Rails, используя задачу Rake. Как я могу это сделать?

Ответ 1

Самый простой способ:

bundle exec rails db < $SQL_FILE

пример:

bundle exec rails db < my_db.sql

Ответ 2

Простой способ

Это работает для простых случаев.

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

Решение найдено в списке рассылки Ruby On Rails с 2006 года (но все еще работает в 2011 году на Rails 3.1).

Сноски

  • Этот связанный вопрос подразумевал это решение, но отклонил его для большого импорта. Я хотел показать это явно, так как он работает для более мелких.
  • Файл, который я пытался импортировать, содержал LOCK TABLES, за которым следует вставка. Данные были для базы данных MySQL. Mysql2 сказал, что у него была неверная синтаксическая ошибка SQL, пока я не удалил операторы блокировки и разблокировки.

Ответ 3

На MySQL это дало мне синтаксическую ошибку. Разделение sql на заявления заставило его работать.

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