Sha256: dec7e5c96abb5fa23703390aca47743aae2a586db9b36e168a28b813744b007f
Contents?: true
Size: 773 Bytes
Versions: 5
Compression:
Stored size: 773 Bytes
Contents
require 'chicago/etl/sink' module Chicago module ETL # Wrapper around a dataset to allowed buffered inserts. # # @api public class BufferingInsertWriter < Sink # The number of rows written before inserting to the DB. BUFFER_SIZE = 10_000 def initialize(dataset, column_names, key=nil) super([], column_names, key) @dataset = dataset end def flush @dataset.insert_replace.import(column_names, output) output.clear end protected def write(row) output << @column_names.map {|name| row[name] } flush if reached_buffer_limit? end private def reached_buffer_limit? output.size >= BUFFER_SIZE end end end end
Version data entries
5 entries across 5 versions & 1 rubygems