Разделитель CSV для человечности?

Существует ли приложение или команда, которая могла для разделения csv (сохраняющий заголовок таблицы) в меньшие равные части?

Я пытаюсь импортировать большой файл 36 МБ, и средство импорта идет kaputz.

Вот пример приложения Windows: http://download.fyxm.net/CSV-Splitter-33994.html

Я предполагаю, что мог использовать вино для использования этой программы, но предпочту что-то уроженец человечности.

4
задан 18 June 2012 в 10:57

4 ответа

Можно использовать csvfix.

Это - инструмент командной строки для руководящих файлов CSV. Страница загрузки не имеет никаких двоичных файлов Linux, но можно скомпилировать исходный код от make-файла.

Вот список команд. В частности, file_split команда надеется быть тем, что Вы после.

Руководство для csvfix может быть найдено здесь.

8
ответ дан 23 November 2019 в 11:38

Таким образом, Вы хотите иметь несколько файлов, которые содержат часть записей в основном файле, и каждый содержит заголовок таблицы?

Если, именно это Вы хотите, можно было записать простой сценарий, который берет первый файл и количество файлов, которые Вы хотите (или количество строк в каждом файле), и создает те файлы.

Если это не должно быть графически, и Вы говорите мне, какие параметры Вы хотите установить, я могу попытаться сделать такой сценарий для Вас.


Это - мое быстрое и грязное решение:

#!/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"
5
ответ дан 23 November 2019 в 11:38

Я сделал тот, потому что я хотел онлайн, который я мог использовать на своем Mac.

проверьте это

0
ответ дан 23 November 2019 в 11:38

Я также сделал интерактивную версию, которая позволяет разделять строками, размером файла или количеством файла. Это довольно интуитивно и удобно для пользователя.

CSV живой разделитель

2
ответ дан 23 November 2019 в 11:38

Другие вопросы по тегам:

Похожие вопросы: