【发布时间】:2013-01-14 01:19:01
【问题描述】:
这是我的完整脚本。
我正在尝试做一个 rake 任务,它从目录中的文件收集数据并将它们加载到 mysql 中。
我修复了 local-infile = 1,没有任何效果。它只是给了我错误
namespace :db do
namespace :load do
desc "Load Properties into DB"
task :properties => :environment do
Mysql2::Client.default_query_options[:connect_flags] |= Mysql2::Client::LOCAL_FILES
@files = Dir.entries("db/property_website_scripts/")
connection = ActiveRecord::Base.connection()
for file in @files
next if file == "." || file == ".."
sql = "LOAD DATA LOCAL INFILE '#{Rails.root}/db/property_website_scripts/#{file}'
INTO TABLE properties
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\r\n'
(property_type,property_for,city,state,country......);"
connection.execute(sql)
end
#updating created at and updated at
Property.update_all({:created_at => Time.now, :updated_at => Time.now}, "created_at IS NULL")
end
end
end
【问题讨论】:
-
我之前已经看过那个帖子
-
那个帖子里直接访问mysql,这是一个rakefile。在mysql中直接使用没有问题,在rakefile中使用时出现问题。
-
您是在简单地执行 SQL,这与将其放入 MySQL 控制台基本相同。此外,您从 MySQL 得到错误,而不是来自 ruby 或 rails 等,所以“它是一个 rakefile”并不重要。
-
我知道那部分。我提到了 rake 文件,因为我从 rakefile 中遇到了问题,但在 MySQL 控制台中没有出现问题,我期待 rakefile 的解决方案能够正常工作。
标签: mysql ruby-on-rails rake rails-activerecord rakefile