Sha256: 12a6bdd4221f97cd96cae2fba664c5c6fb7cd5e7c82eb83e47e6fbe3da222031
Contents?: true
Size: 1.34 KB
Versions: 3
Compression:
Stored size: 1.34 KB
Contents
require 'csv' require 'fileutils' module Forklift module Connection class Csv < Forklift::Base::Connection def initialize(config, forklift) @config = config @forklift = forklift end def config @config end def forklift @forklift end def connect; end def disconnect; end def read(size=forklift.config[:batch_size]) data = [] CSV.foreach(config[:file], headers: true, converters: :all) do |row| data << row.to_hash.symbolize_keys if(data.length == size) if block_given? yield data data = [] else return data end end end if block_given? yield data else return data end end def write(data, append=true) if (append == false) FileUtils.rm(config[:file], {force: true}) end if( !File.exists?(config[:file]) ) keys = data.first.keys row = {} keys.each do |k| row[k] = k end data = [row] + data end CSV.open(config[:file],'a') do |file| data.each do |row| file << row.values end end end private #/private end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
forklift_etl-1.2.2 | lib/forklift/transports/csv.rb |
forklift_etl-1.2.1 | lib/forklift/transports/csv.rb |
forklift_etl-1.2.0 | lib/forklift/transports/csv.rb |