PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Consulta bruta do Rails para o formato csv, a ser retornada via controlador


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.