Module: CopyCsv::ClassMethods
- Defined in:
- lib/copy_csv.rb
Instance Method Summary collapse
-
#copy_csv(io, relation: all) ⇒ Object
Performs a database query to copy results as CSV to an IO object.
Instance Method Details
#copy_csv(io, relation: all) ⇒ Object
Performs a database query to copy results as CSV to an IO object.
CSV is created directly in PostgreSQL with less overhead then written to the provided IO object.
Example
File.open("users.csv", "wb") do |file|
User.where(unsubscribed: false).copy_csv(io: file)
end
Returns nil
19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
# File 'lib/copy_csv.rb', line 19 def copy_csv(io, relation: all) query = " COPY (\#{ relation.to_sql }) TO STDOUT WITH DELIMITER ',' CSV HEADER ENCODING 'UTF-8' QUOTE '\"'\n SQL\n\n raw = connection.raw_connection\n raw.copy_data(query) do\n while (row = raw.get_copy_data)\n io.puts row\n end\n end\n\n nil\nend\n" |