AFAIK bạn cần sử dụng copy_data
trên kết nối cơ sở dữ liệu PostgreSQL cơ bản cho việc này:
Và thậm chí còn có một ví dụ:
conn.copy_data "COPY my_table TO STDOUT CSV" do
while row=conn.get_copy_data
p row
end
end
Trình bao bọc của ActiveRecord cho kết nối cơ sở dữ liệu thô không biết copy_data
là gì nhưng bạn có thể sử dụng raw_connection
để mở nó ra:
conn = ActiveRecord::Base.connection.raw_connection
csv = [ ]
conn.copy_data('copy stories to stdout with csv header') do
while row = conn.get_copy_data
csv.push(row)
end
end
Điều đó sẽ để lại cho bạn một mảng các chuỗi CSV trong csv
(một hàng CSV cho mỗi mục nhập mảng) và bạn có thể csv.join ("\ r \ n")
để nhận dữ liệu CSV cuối cùng.