class SqlToCsvStream::PostgresqlCopyEnumerator
Constants
- COPY_OPTIONS_DEFAULTS
Public Class Methods
default_connection()
click to toggle source
# File lib/sql_to_csv_stream/postgresql_copy_enumerator.rb, line 9 def self.default_connection raise 'PostgreSQL database connection required' unless defined?(ActiveRecord) ActiveRecord::Base.connection.raw_connection end
new(sql, connection: self.class.default_connection, copy_options: {})
click to toggle source
# File lib/sql_to_csv_stream/postgresql_copy_enumerator.rb, line 15 def initialize(sql, connection: self.class.default_connection, copy_options: {}) @sql = sql.chomp(';') @connection = connection @copy_options = COPY_OPTIONS_DEFAULTS.merge(copy_options) end
Public Instance Methods
each() { |row| ... }
click to toggle source
# File lib/sql_to_csv_stream/postgresql_copy_enumerator.rb, line 21 def each @connection.copy_data(copy_sql) do while (row = @connection.get_copy_data) yield(row) if block_given? end end end
Private Instance Methods
copy_sql()
click to toggle source
# File lib/sql_to_csv_stream/postgresql_copy_enumerator.rb, line 31 def copy_sql "COPY (#{@sql}) TO STDOUT WITH (#{joined_copy_options})" end
joined_copy_options()
click to toggle source
# File lib/sql_to_csv_stream/postgresql_copy_enumerator.rb, line 35 def joined_copy_options @copy_options.map { |k, v| "#{k.upcase} #{v}" } .join(', ') end