У меня есть файл .sql
, который я бы хотел загрузить в мою базу данных Rails, используя задачу Rake. Как я могу это сделать?
Как импортировать файл SQL в базу данных Rails?
Ответ 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