sql >> Database >  >> RDS >> PostgreSQL

Rails raw-query voor csv-indeling, te retourneren via controller

AFAIK je moet de copy_data gebruiken methode op de onderliggende PostgreSQL-databaseverbinding hiervoor:

En er is zelfs een voorbeeld:

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

De wrapper van ActiveRecord voor de onbewerkte databaseverbinding weet niet wat copy_data is maar je kunt raw_connection om het uit te pakken:

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

Dat zou je achterlaten met een array van CSV-strings in csv (één CSV-rij per array-item) en u kunt csv.join("\r\n") om de definitieve CSV-gegevens te krijgen.



  1. Moet ik voorbereide instructies voor MySQL gebruiken in PHP PERFORMANCE-WISE?

  2. VARRAY's maken als PL/SQL-bloklid in Oracle Database

  3. Onbewerkte query uitvoeren tijdens migratie - Sequelize 3.30

  4. Generate_series in Postgres vanaf begin- en einddatum in een tabel