Então você quer ter vários arquivos que contenham parte das entradas no arquivo principal e cada um contém o cabeçalho da tabela?
Se é isso que você quer, pode-se escrever um script simples que leva o primeiro arquivo e o número de arquivos que você quer (ou o número de linhas em cada arquivo) e cria esses arquivos.
Se não precisar ser gráfico e você me disser quais parâmetros deseja definir, posso tentar criar um script para você.
Esta é a minha solução rápida e suja:
#!/usr/bin/python
import optparse
import sys
import os
parser = optparse.OptionParser(usage="csv-splitter infile", description="Takes a CSV file and splits it into smaller files. The header of the infile is written to each file.")
parser.add_option("-p", "--parts", dest="parts", type="int", default=3, help="number of resulting files")
(options, args) = parser.parse_args()
del parser
infile = args[0]
lines = 0
if not os.path.exists(infile):
print "file does not exist"
sys.exit(1)
print "counting lines ..."
with open(infile) as h:
for line in h:
lines += 1
lines_per_file = lines/options.parts
print "found %d lines, that makes %d lines per file" % (lines, lines_per_file)
with open(infile) as h:
header = h.readline()
read = h.readline()
for filenumber in xrange(options.parts):
written_lines = 0
print "writing to file %d of %d ..." % (filenumber+1, options.parts)
with open(infile+"-part-"+str(filenumber)+".csv", "w") as outfile:
outfile.write(header)
while read != '' and (written_lines <= lines_per_file or filenumber+1 == options.parts):
outfile.write(read)
written_lines += 1
read = h.readline()
print "done"