Выполнить sql script внутри seed.rb в rails3

Я хочу выполнить этот sql script внутри моего seed.rb

LOAD DATA LOCAL INFILE '/home/list-38.csv'
INTO TABLE list
FIELDS TERMINATED BY ':'
LINES TERMINATED BY '\n'
(email,name,password);

Я проверил эту ссылку, но не смог определить решение. Так что, когда мы запускаем rake db: seed

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

любые запросы..do ответ

Thanx

Ответы

Ответ 1

Попробуйте в db/seeds.rb выполнить необработанный SQL с rake db: seed

connection = ActiveRecord::Base.connection()
connection.execute("*_YOUR_SQL_HERE_*")

Ответ 2

Для нескольких операторов sql я закончил итерацию каждого оператора отдельно:

# db/seeds.rb

connection = ActiveRecord::Base.connection()

sql = <<-EOL
  INSERT INTO users values ('Admin');
  INSERT INTO categories values ('Supervisors');
EOL

sql.split(';').each do |s|
  connection.execute(s.strip) unless s.strip.empty?
end

Ответ 3

Вариант ответа Fredrik Boström, который может загружаться из файла:

# db/seeds.rb

def execute_sql_file(path, connection = ActiveRecord::Base.connection)
  require 'active_support/core_ext/object/blank.rb'
  IO.read(path).split(';').reject(&:blank?).each do |statement|
    connection.execute(statement)
  end
end

execute_sql_file('my.sql')