2

私は問題があります。コマンド 'rake db:seed' には 2 時間かかります。これは、myfriends.txt に 300 万を超えるエントリがあるためです。

File.open("lib/friends_name/myfriends.txt", "r").each_line do |row|
    row = row.encode('utf-8', 'iso-8859-1').split(',')
    Friend.create(name: row[0], first_name: row[1], age: row[2], sex: row[3], address: row[4])
end

より迅速な解決策はありますか?私はpostgresqlを使用しています。

4

1 に答える 1

1

PostgreSQL の COPY 関数を使用します。これは、私が書いた時点では機能していましたが、使用してからしばらく経ちました...

異なるサーバー上の Rails での postgresql COPY コマンドの問題

再貼り付けコード:

conn = ActiveRecord::Base.connection_pool.checkout
raw  = conn.raw_connection
raw.exec("COPY tablename (col1, col2, col3) FROM STDIN")
# open up your CSV file looping through line by line and getting the line into a format suitable for pg's COPY...
rc.put_copy_data line
# once all done...
rc.put_copy_end
while res = rc.get_result do; end # very important to do this after a copy
ActiveRecord::Base.connection_pool.checkin(conn)
于 2012-11-21T17:17:56.403 に答える