5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
# 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;
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
|