Как быстрее всего объединить 200 больших (от 50 МБ до 500 МБ) CSV-файлов?

У меня около 200 больших наборов данных CSV. Все тот же формат. Около половины из них имеют размер > 100 мб. Мне нужен способ объединить их в 1 (или несколько баз данных).

Я попытался поместить их в базу данных Azure с помощью фабрики данных, но потребовалось много времени, чтобы загрузить только один файл csv, не говоря уже о 200.

Может ли кто-нибудь порекомендовать быстрый и относительно безболезненный способ поместить эти файлы в какую-либо базу данных? (в идеале тот, который может поддерживать извлечение SQL)


person Ryan Bentham    schedule 21.02.2020    source источник
comment
Почти любая база данных? Например, mysql dev.mysql.com/doc/refman/8.0 /en/load-data.html   -  person hidden_4003    schedule 21.02.2020
comment
Лучшая программа для открытия больших текстовых файлов (по моему опыту) — платная Textpad, хотя фанатики против рекомендаций по продукту, поэтому берите то, что у вас есть, и удаляйте вопрос, прежде чем вас принесут в жертву с козами.   -  person John    schedule 21.02.2020
comment
У вас есть MS SQL SERVER?   -  person Besarion    schedule 21.02.2020
comment
Также попробуйте PowerBI, который является бесплатным и использует mssql для внутреннего использования.   -  person hidden_4003    schedule 21.02.2020
comment
Я бы написал сценарий bash, который импортирует файл за файлом в MySQL, как предлагает @hidden_4003.   -  person Paflow    schedule 21.02.2020
comment
@Besarion У меня есть студия управления SQL Server 17?   -  person Ryan Bentham    schedule 21.02.2020
comment
@hidden_4003 Спасибо, но по иронии судьбы данные в конечном итоге исчезнут, хотя проблемы с производительностью не позволяют мне подключиться напрямую ко всем файлам CSV, а затем использовать функцию двоичного извлечения для каждого файла.   -  person Ryan Bentham    schedule 21.02.2020
comment
@Ryan Benthan Что может сработать, если вы используете пакет SSIS, создаете цикл для всех файлов, а затем импортируете их в таблицу. Просто создайте контейнер For Loop, после чего вы сможете создать импорт ODBC из CSV-файла в базу данных, и, поскольку они имеют один и тот же формат, его не нужно менять.   -  person Besarion    schedule 21.02.2020
comment
@Paflow, спасибо. Какова производительность на этом?   -  person Ryan Bentham    schedule 21.02.2020
comment
@Besarion Я также читал об использовании python для перемещения данных. Считаете ли вы, что пакет SSIS будет более подходящим, чем, например, скрипт Python?   -  person Ryan Bentham    schedule 21.02.2020


Ответы (1)


Это будет базовая схема вашего скрипта Python: поставляется

fout=open("out.csv","a")
# first file:
for line in open("sh1.csv"):
    fout.write(line)
# now the rest:    
for num in range(2,201):
    f = open("sh"+str(num)+".csv")
    f.next() # skip the header
    for line in f:
         fout.write(line)
    f.close() # not really needed
fout.close()

Другой пример

Другой пример который должен работать на вас

person Besarion    schedule 21.02.2020
comment
Я бы сказал, что лучше всего смесь. Объедините использование python, а затем импортируйте один массивный CSV с помощью пакета SSIS. - person Besarion; 21.02.2020