Class: PgCopy::CopyToCSV

Inherits:
Object
  • Object
show all
Defined in:
lib/pg_copy/copy_to_csv.rb

Constant Summary collapse

SQL =
<<-SQL.freeze
  COPY (%<sql>s) TO STDOUT (
    FORMAT CSV,
    DELIMITER '%<delimiter>c',
    HEADER %<header>s,
    QUOTE '%<quote>c'
  )
SQL
DEFAULTS =
{
  delimiter: ',',
  header: false,
  quote: '"'
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(conn, sql, dest, options = {}) ⇒ CopyToCSV

Returns a new instance of CopyToCSV.



18
19
20
21
22
23
# File 'lib/pg_copy/copy_to_csv.rb', line 18

def initialize(conn, sql, dest, options = {})
  @conn = conn
  @sql = sql
  @dest = dest
  @options = DEFAULTS.merge(options)
end

Instance Method Details

#copyObject



25
26
27
28
29
30
31
32
33
34
35
# File 'lib/pg_copy/copy_to_csv.rb', line 25

def copy
  sql = format(SQL, sql: @sql, **@options)

  File.open(@dest, 'wb') do |f|
    @conn.copy_data(sql) do
      while line = @conn.get_copy_data
        f.write(line)
      end
    end
  end
end