AFAIK vous devez utiliser le copy_data
méthode sur la connexion à la base de données PostgreSQL sous-jacente pour cela :
Et il y a même un exemple :
conn.copy_data "COPY my_table TO STDOUT CSV" do
while row=conn.get_copy_data
p row
end
end
Le wrapper d'ActiveRecord pour la connexion à la base de données brute ne sait pas ce que copy_data
est mais vous pouvez utiliser raw_connection
pour le déballer :
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
Cela vous laisserait avec un tableau de chaînes CSV dans csv
(une ligne CSV par entrée de tableau) et vous pouvez csv.join("\r\n")
pour obtenir les données CSV finales.