class GeocodeRecords::DumpSqlToCsv

Attributes

database_url[R]
glob[R]
num[R]
subquery[R]
table_name[R]

Public Class Methods

new( database_url:, glob:, table_name: nil, subquery: nil, num: nil ) click to toggle source
# File lib/geocode_records/dump_sql_to_csv.rb, line 9
def initialize(
  database_url:,
  glob:,
  table_name: nil,
  subquery: nil,
  num: nil
)
  @database_url = database_url
  @glob = glob
  @table_name = table_name
  @subquery = subquery
  @num = num
end

Public Instance Methods

perform() click to toggle source
# File lib/geocode_records/dump_sql_to_csv.rb, line 23
def perform
  memo = GeocodeRecords.new_tmp_path(subquery || table_name)
  GeocodeRecords.psql(
    database_url,
    "\\copy (#{sql}) TO '#{memo}' DELIMITER ',' CSV HEADER" 
  )
  memo
end

Private Instance Methods

sql() click to toggle source
# File lib/geocode_records/dump_sql_to_csv.rb, line 34
def sql
  @sql ||= begin
    num_suffix = (num == 1 ? '' : num)
    unless glob
      "SELECT id, house_number_and_street#{num_suffix}, city#{num_suffix}, state#{num_suffix}, regexp_replace(postcode#{num_suffix}, '.0$', '') AS postcode#{num_suffix} FROM #{subquery ? "(#{subquery}) t1" : table_name} WHERE city#{num_suffix} IS NOT NULL OR postcode#{num_suffix} IS NOT NULL"
    else
      "SELECT id, glob#{num_suffix} FROM #{subquery ? "(#{subquery}) t1" : table_name} WHERE (city#{num_suffix} IS NULL AND postcode#{num_suffix} IS NULL) AND glob#{num_suffix} IS NOT NULL"
    end
  end
end