PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Query grezza Rails per il formato csv, da restituire tramite controller

AFAIK devi usare copy_data metodo sulla connessione al database PostgreSQL sottostante per questo:

E c'è anche un esempio:

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

Il wrapper di ActiveRecord per la connessione al database non elaborato non sa cosa copy_data è ma puoi usare raw_connection per scartarlo:

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

Ciò ti lascerebbe con una matrice di stringhe CSV in csv (una riga CSV per voce dell'array) e potresti csv.join("\r\n") per ottenere i dati CSV finali.