class SplitCSV::Splitter
Public Instance Methods
split(file, maxlength=5000, separator=';')
click to toggle source
# File lib/splitcsv/splitter.rb, line 5 def split(file, maxlength=5000, separator=';') csv_basename = File.basename(file, ".*") csv_path = File.expand_path(file) csv_dir = File.dirname(csv_path) csv_obj = CSV.open(csv_path, :row_sep => :auto, :col_sep => separator) csv_length = csv_obj.readlines.size - 1; # Opnieuw inlezen zodat readline pointer terug aan 0 staat. Na gebruiken van # csv_obj.readlines.size werd "csv_obj" al eens volledig doorlopen csv_obj = CSV.open(csv_path, :row_sep => :auto, :col_sep => separator) firstline = csv_obj.readline for i in 0..((csv_length / maxlength.to_i).ceil) do CSV.open("#{csv_dir}/#{csv_basename}_#{i+1}.csv", 'w', :row_sep => :auto, :col_sep => separator) do |csv| csv << firstline for j in 1..maxlength.to_i do if (line = csv_obj.readline) != nil csv << line end end end end end