私のアプリケーションではCity
モデルがあります。私はsql
ファイルを持っています。(それ以上の2.7M) &私はそれらをすべて私のプロダクションサーバに植え付ける必要があります。Ruby on Rails - 大量のデータ(2.7M以上)を生産データベースにシードする
私は通常、私はseeds.rb
でこれを行うことができます知っている:
cities = City.create([
{id: 1, name: 'Bombuflat', state_id: 1},
{id: 2, name: 'Garacharma', state_id: 1},
{id: 3, name: 'Port Blair', state_id: 1},
// Other cities
])
しかし、これはシードするビッグデータであるので、各ライン上id
、name
、state_id
を追加するために、本当に長い時間がかかります。
は今のところ私のcities.sql
は、のような都市の配列を持っています
//id, state_id, name
(1, 1, 'Aixàs'),
(2, 1, 'Aixirivali'),
(3, 1, 'Aixirivall')
ので、私は使っ多分各行にid
、name
、state_id
を追加する必要はありませんこれは何を行うための最善の方法です私はすでに持っている配列。
unless Rails.env.production?
connection = ActiveRecord::Base.connection
sql = File.read('db/MySQL.sql')
statements = sql.split(/;$/)
statements.pop
ActiveRecord::Base.transaction do
statements.each do |statement|
connection.execute(statement)
end
end
end
RailsでSQLをプロダクションDBにダンプしないのはなぜですか? – Bustikiller
正直私は、この量のデータを、シード目的のためにActiveRecordに挿入する必要はないと思います。ツールを使用して、データをデータベースに一括して挿入します。 MySQLの 'LOAD DATA INFILE'は、わずかなパワーのデータベースを使って数秒でそれを行うことができます。 – vcsjones
@Bustikiller私の制作で私はpostgresqlを使用しています –