尝试使用Ruby将CSV文件中的数据插入MySQL数据库,速度非常慢。请注意,这不是Rails应用程序,只是独立的Ruby脚本。
这是我的代码:
def add_record (data1, data2, time)
date = DateTime.strptime(time, "%m/%d/%y %H:%M")
<my table>.create(data1: data1, data2: data2, time: date)
end
def parse_file (file)
path = @folder + "\\" + file
CSV.foreach(path, {headers: :first_row}) do |line|
add_record(line[4], line[5], line[0])
end
end
def analyze_data ()
Dir.foreach @folder do |file|
next if file == '.' or file == '..'
parse_file file
end
end
我的联系:
@connection = ActiveRecord::Base.establish_connection(
:adapter=> "mysql2",
:host => "localhost",
:database=> <db>,
:username => "root",
:password => <pw>
)
任何帮助表示感谢。
答案 0 :(得分:0)
使用zdennis/activerecord-import gem。你可以快速插入吨记录。
答案 1 :(得分:0)
这是一篇关于性能和战略的好文章,标题为Testing the Fastest Way to Import a Table into MySQL。不要让标题的mysql版本或文章内部吓跑你。跳到最底层并得出一些结论:
您可以在不使用raw的情况下将表导入MySQL的最快方法 files是LOAD DATA语法。使用InnoDB的并行化 更好的结果,并记得调整像你的基本参数 事务日志大小和缓冲池。精心编程和 导入可以使> 2小时的问题成为一个2分钟的过程。您 可暂时禁用某些安全功能以获得额外性能
你可能会发现你的时间大大减少了。