sql >> Base de Datos >  >> RDS >> PostgreSQL

Consulta sin procesar de Rails para formato csv, que se devolverá a través del controlador

AFAIK necesitas usar el copy_data en la conexión de la base de datos PostgreSQL subyacente para esto:

E incluso hay un ejemplo:

conn.copy_data "COPY my_table TO STDOUT CSV" do
  while row=conn.get_copy_data
    p row
  end
end

El contenedor de ActiveRecord para la conexión de la base de datos sin formato no sabe qué copy_data es pero puede usar raw_connection para desenvolverlo:

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

Eso te dejaría con una matriz de cadenas CSV en csv (una fila CSV por entrada de matriz) y podría csv.join("\r\n") para obtener los datos CSV finales.