Как заполнить базу данных mysql, запустив сценарии sql на платформе Ruby Rails? - PullRequest
2 голосов
/ 26 января 2011

Я был в основном Java-программистом и новичком в Ruby Rails.В java для заполнения базы данных запускается задача ant, задача ant выполняет скрипт SQL.SQL-скрипт в основном представляет собой набор операторов вставки.

Я полагаю, что на платформе Ruby Rails должен быть какой-то эквивалент задачи ant для запуска сценария sql?

Отредактировано в ответ на ответ Никиты:

Хотя можно использовать миграциюкак один из способов для посева данных.Но я не хочу делать переделки написания классов миграции, соответствующих сценариям sql.поэтому мне нужно какое-то решение, с помощью которого я должен только выполнить файл сценария SQL.Я хочу управлять базой данных только через SQL-код.

Ответы [ 3 ]

5 голосов
/ 07 сентября 2012

Мне лично не нравится использовать миграцию для заполнения больших объемов «статических» данных.Вы можете легко выполнить SQL-операторы из db/seeds.rb:

2 голосов
/ 26 января 2011

Если вы сгенерировали приложение rails из консоли, у вас должен быть файл db/seeds.rb. Он заполняет таблицы базы данных значениями по умолчанию.

Затем вы можете выполнить rake db:seed.

Автоматически сгенерированный seeds.rb содержит этот пример, который должен устранить любые сомнения

# This file should contain all the record creation needed to seed the database with its default values.
# The data can then be loaded with the rake db:seed (or created alongside the db with db:setup).
#
# Examples:
#   
#   cities = City.create([{ :name => 'Chicago' }, { :name => 'Copenhagen' }])
#   Major.create(:name => 'Daley', :city => cities.first)

Обратите внимание, что вы не помещаете в него какие-либо операторы sql (обычно это не так). Несмотря на то, что вы все еще можете выполнить sql из исходного файла или миграции, использование кода и моделей ruby ​​предпочтительнее.

на комментарий
Может быть, у нас другое понимание того, что означает «семя».
В любом случае, миграция должна помочь здесь.
Это слишком большая тема, чтобы освещать ее в моем сообщении, поэтому, пожалуйста, прочитайте руководство. Хотя основное внимание уделяется созданию / удалению таблиц, вы можете точно так же манипулировать данными в процессе миграции.

0 голосов
/ 07 сентября 2012

Для начальных статических данных используйте предложенный файл seed.

Для других целей вы можете просто обернуть весь оператор вставки в оператор активной записи, например, find_by_sql («вставить в mytable (col1, col2) значения (1,2)»). использование «найти по» не очень хорошее чтение, но оно подойдет.
Вы также можете просто использовать ActiveRecord::Base.connection.execute(sql) и поместить туда свой sql. Все, что у вас есть, например, вставка и т. Д., Будет выполнено. Обычно вам понадобится ; в конце, если у вас несколько операторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...