sql >> Databasteknik >  >> RDS >> PostgreSQL

Rails råfråga för csv-format, som ska returneras via styrenhet

AFAIK måste du använda copy_data metod på den underliggande PostgreSQL-databasanslutningen för detta:

Och det finns till och med ett exempel:

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

ActiveRecords omslag för den råa databasanslutningen vet inte vad copy_data är men du kan använda raw_connection för att packa upp det:

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

Det skulle lämna dig med en rad CSV-strängar i csv (en CSV-rad per arraypost) och du kan csv.join("\r\n") för att få den slutliga CSV-datan.



  1. Förhindrar SQL-injektion på inloggningssida i PHP

  2. Återge kinesiska/UTF8-tecken i MySQL Select med PuTTY &kommandoradsklient

  3. Mysql gå med och summan fördubblar resultatet

  4. Väljer första raden per grupp