PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Probleme mit dem postgresql-COPY-Befehl mit Rails auf einem anderen Server

Sie können COPY FROM STDIN verwenden, um dies zu umgehen ... so:

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...
raw.put_copy_data line
# once all done...
raw.put_copy_end
while res = raw.get_result do; end # very important to do this after a copy
ActiveRecord::Base.connection_pool.checkin(conn)

Ich glaube, es gibt einige Optionen für COPY, mit denen Sie angeben können, dass Sie CSV-Daten übergeben, was es noch einfacher machen würde ...