AFAIK você precisa usar o
copy_data
método na conexão de banco de dados PostgreSQL subjacente para isso:E tem até um exemplo:
conn.copy_data "COPY my_table TO STDOUT CSV" do
while row=conn.get_copy_data
p row
end
end
O wrapper do ActiveRecord para a conexão do banco de dados bruto não sabe o que
copy_data
é, mas você pode usar raw_connection
para desembrulhar: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
Isso deixaria você com uma matriz de strings CSV em
csv
(uma linha CSV por entrada de matriz) e você pode csv.join("\r\n")
para obter os dados CSV finais.