Существует ли приложение или команда, которая могла для разделения csv (сохраняющий заголовок таблицы) в меньшие равные части?
Я пытаюсь импортировать большой файл 36 МБ, и средство импорта идет kaputz.
Вот пример приложения Windows: http://download.fyxm.net/CSV-Splitter-33994.html
Я предполагаю, что мог использовать вино для использования этой программы, но предпочту что-то уроженец человечности.
Можно использовать csvfix.
Это - инструмент командной строки для руководящих файлов CSV. Страница загрузки не имеет никаких двоичных файлов Linux, но можно скомпилировать исходный код от make-файла.
Вот список команд. В частности, file_split
команда надеется быть тем, что Вы после.
Руководство для csvfix может быть найдено здесь.
Таким образом, Вы хотите иметь несколько файлов, которые содержат часть записей в основном файле, и каждый содержит заголовок таблицы?
Если, именно это Вы хотите, можно было записать простой сценарий, который берет первый файл и количество файлов, которые Вы хотите (или количество строк в каждом файле), и создает те файлы.
Если это не должно быть графически, и Вы говорите мне, какие параметры Вы хотите установить, я могу попытаться сделать такой сценарий для Вас.
Это - мое быстрое и грязное решение:
#!/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"
Я сделал тот, потому что я хотел онлайн, который я мог использовать на своем Mac.
проверьте это
Я также сделал интерактивную версию, которая позволяет разделять строками, размером файла или количеством файла. Это довольно интуитивно и удобно для пользователя.