Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
插入100000+;在rails中记录到mysql_Mysql_Ruby On Rails_Ruby_Redis - Fatal编程技术网

插入100000+;在rails中记录到mysql

插入100000+;在rails中记录到mysql,mysql,ruby-on-rails,ruby,redis,Mysql,Ruby On Rails,Ruby,Redis,我想将信息从redis传输到mysql 首先,我从redis获得了用户id和分数 info = $redis.zrevrange("some_info", 0, limit - 1, withscores: withscores) 然后我需要处理这些日期: total_info = info.each_slice(2).to_a.inject([]) do |sum, e| sum << { id: id, name: n

我想将信息从redis传输到mysql

首先,我从redis获得了用户id和分数

info = $redis.zrevrange("some_info", 0, limit - 1, withscores: withscores)
然后我需要处理这些日期:

  total_info = info.each_slice(2).to_a.inject([]) do |sum, e|
    sum << {
            id: id,
            name: name,
            rank: rank,
            score: score,
           }
total_info=info.每个_切片(2).注入([])做|求和,e|
sum您可以在his中使用

以下是一个例子:

columns = [ :id, :name, :rank, :score ]
values = []
infos.each do |info|
  values << [info.id, info.name, info.rank, info.score]
end
Model.import columns, values, validate: false
columns=[:id,:name,:rank,:score]
值=[]
infos.each do| info|
值可以在his中使用

以下是一个例子:

columns = [ :id, :name, :rank, :score ]
values = []
infos.each do |info|
  values << [info.id, info.name, info.rank, info.score]
end
Model.import columns, values, validate: false
columns=[:id,:name,:rank,:score]
值=[]
infos.each do| info|

值感谢@e4c5和@Rich Peck

我将日期转储到.CSV文件中,然后将其导入mysql。它非常快

info = $redis.zrevrange("some_info", 0, limit - 1, withscores: withscores)
CSV.open("temp.csv", "w") do |csv|
  csv << %w(id, name, rank, score......)
  info.each_slice(2) do |e|
      csv << [id, name, rank, score......]
  end
end
info=$redis.zrevrange(“一些信息”,0,限制-1,带核心:带核心)
CSV.open(“临时CSV”,“w”)do | CSV|

csv感谢@e4c5和@Rich Peck

我将日期转储到.CSV文件中,然后将其导入mysql。它非常快

info = $redis.zrevrange("some_info", 0, limit - 1, withscores: withscores)
CSV.open("temp.csv", "w") do |csv|
  csv << %w(id, name, rank, score......)
  info.each_slice(2) do |e|
      csv << [id, name, rank, score......]
  end
end
info=$redis.zrevrange(“一些信息”,0,限制-1,带核心:带核心)
CSV.open(“临时CSV”,“w”)do | CSV|

csv最快的方法是迭代redis集合,将每一行写入csv文件,并使用加载数据加载它INFILE@e4c5好主意!我正在尝试是的,最好的方法是将数据转储到
.sql
文件中,并将其放入数据库。CSV应该足够了;通过循环进行迭代需要提前进行。最快的方法是迭代redis集合,将每一行写入CSV文件,并使用加载数据加载它INFILE@e4c5好主意!我正在尝试是的,最好的方法是将数据转储到
.sql
文件中,并将其放入数据库。CSV应该足够了;在循环中迭代将花费很长时间