Выполните SQL-скрипт внутри seed.РБ в рельсах 3


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

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

Я проверил эту ссылку, но не смог выяснить solution.So что как только мы запустим грабли db: seed

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

Любые запросы ..отвечайте

Thanx

3 16

3 ответа:

Попробуйте сделать это в db/seeds.rb для выполнения raw SQL с помощью rake db: seed

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

Для нескольких операторов 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

Вариант ответа Фредрика Бострема, который можно загрузить из файла:

# 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')