|
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
|
|
Как разбить огромный csv файл30.12.2016, 14:33. Показов 19495. Ответов 51
Добрый день, помогите решить задачу: есть ексель файл на 5000 строк и есть огромный csv файл на 1,16 Гбайт, нужно найти совпадающие значения в этих файлах пробовал через функцию ВПР находится все до 1000000 строк, а больше ексель не показывает так как стоит ограничение в этом пределе, а сам csv файл предположительно на 50000000 строк я хочу его разбить на 50 меньших файлов и по отдельности произвести поиск совпадающих строк, как это можно сделать? Или подскажите пожалуйста другой способ найти совпадающие строки с моим маленьким файлом и этим огромнейшим csv файлом
0
|
|
| 30.12.2016, 14:33 | |
|
Ответы с готовыми решениями:
51
Как разбить файл на две части, разархивировать и изменить вторую часть, а потом собрать файл обратно? Разделить огромный txt файл на куски и поместить в различные книги excel Как сохранить в csv utf8 кодировки файл из exсel? |
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|
| 30.12.2016, 14:38 | |
|
50 миллионов строк? Это же кто такой файл родил?
![]() Откройте csv как обычный текстовый файл, и построчно считывая, разбивайте как хотите.
0
|
|
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 30.12.2016, 15:07 | |
|
5000 строк в словарь, затем читаете построчно скриптом текстовый файл и ищите совпадение в словаре, думаю за пару тройку минут может отработать.
1
|
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
| 30.12.2016, 18:56 | |
|
aroma4s, приложите часть Excel файла, часть csv и то, что нужно получить с помощью ВПР.
Без этого будут только общие рассуждения. Добавлено через 10 минут Да, вырезать часть гигового файла тоже проблема Можно сделать с помощью hex-редактора, например HxD https://mh-nexus.de/en/hxd/
0
|
|
|
es geht mir gut
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
|
|||||||
| 30.12.2016, 22:24 | |||||||
|
А с небольшими файлами проблем нет. Вот такой код разбивает файл в 1 млн.строк (примерно 27мегабайт) на файлы по 10000 строк за 10 секунд.
0
|
|||||||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||||||
| 31.12.2016, 00:23 | ||||||
|
SoftIce,
я имел в виду - как взять часть огромного файла, чтобы выложить на форум. Ведь Блокнотом его не откроешь, а через Excel долго и при сохранении могут возникнуть искажения.Вот код, которым можно получить первые 1000 строк большого файла менее чем за секунду:
0
|
||||||
|
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
|
|
| 31.12.2016, 02:00 [ТС] | |
|
База данных недействительных паспортов
Понимаете, вы умнее меня и я не понимаю что вы имеете ввиду, можете подробно объяснить как это реализовать Добавлено через 2 минуты SoftIce, База данных недействительных паспортов Понимаете, вы умнее меня и я не понимаю что вы имеете ввиду, можете подробно объяснить как это реализовать? Добавлено через 1 минуту bedvit, Я как то читал что можно загрузить csv в access и потом разбить на подмножества, не подскажите как это можно сделать? Добавлено через 3 минуты Hugo121, Можете подробней рассказать как загрузить в словарь и как считать такое количество строк? Добавлено через 10 минут Казанский, приложить не могу так как на работе нету доступа к интернету и копировать на флешку файлы нельзя, В кратце: я делаю один лист со своими 5000-ми значениями, и второй лист на 1000000 значений с помощью впр искомые значения из 1-го листа ищутся во 2-м листе, если одинаковые значения есть то напротив строки со значением выводится тоже самое значение, если таких значений во 2-м листе нет то пишется Н/Д т.е. недопустимое данное, имеется ввиду что совпадений нет мне нужно разбить 50000000 строчный файл по 1000000, чтобы я мог вставлять во второй лист и тем самым искать совпадающие значения Добавлено через 8 минут SoftIce, Казанский, я думаю VB используется для видимых значений т.е. до 1000000, но никак не те что за границей поэтому я думаю тут либо нужно какой нибудь отдельный скрипт *.vbs написать либо как то с помощью access сделать подмножества cvs файлов моя функция ВПР примерно выглядит так =ВПР(A7;'Лист2'A:A;1;ЛОЖЬ)
0
|
|
|
11525 / 3812 / 683
Регистрация: 13.02.2009
Сообщений: 11,229
|
||||||
| 31.12.2016, 08:39 | ||||||
|
Слушай Hugo121! Зря не скажет!
Примерно так:
2
|
||||||
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 01.01.2017, 22:21 | |
|
Как вариант кода Alex77755 - можно массив m делать из одного столбца, а для результатов создать такой же пустой, который в финале выгрузить рядом с исходными данными - так сэкономите память и вероятно чуть скорость - после того, как данные помещены в словарь, этот массив m можно убить, он больше не нужен.
Или как другая вариация - совпавшие (или несовпавшие) номера собирать в коллекцию, которую в финале выгрузить куда-нибудь - так сразу получите только нужные номера.
0
|
|
|
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
|
|
| 03.01.2017, 15:11 [ТС] | |
|
Alex77755, спасибо что предложили вариант решения, попробую сделать, только вопрос что за зелёный комментарий выглядящий как код, его нужно писать?
Добавлено через 11 минут Hugo121, спасибо что сказали, но на словах можно сколько угодно объяснять но мне все равно не понять как это реализовать
0
|
|
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
||
| 03.01.2017, 18:05 | ||
![]() Код Вам уже дали, а файлов никто не видел... Я обычно жду файла, чтоб впустую не работать - судя по теме это верный подход, раз при уже наличии кода возникают вопросы. А зелёный комментарий это и есть комментарий, он только для информации, можете его не копипастить
0
|
||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
||
| 03.01.2017, 20:02 | ||
|
- сколько там полей (т.е. столбцов при импорте в Excel); - что является разделителем полей - запятая или точка с запятой; - значения в целевом столбце записаны как числа или как текст (в кавычках). Потом в другом месте, где есть доступ к инету, воссоздайте csv файл из нескольких строк с произвольными данными, воссоздайте Excel файл, убедитесь, что та же формула с ВПР работает правильно (фактически нужна функция ПОИСКПОЗ, но не суть), и выложите это все сюда. Предложение по алгоритму: сначала из Excel файла в словарь (или коллекцию), как в примерах выше, а потом в цикле по значениям из csv удалять из словаря ключи, тем самым уменьшая его и ускоряя процесс. В конце останутся только те ключи, которых не нашлось в csv файле.
0
|
||
|
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
|
|
| 09.01.2017, 10:51 [ТС] | |
|
Hugo121, Казанский,
Попробую сегодня-завтра пример скинуть, но они думаю особо не помогут В общем я сейчас на работе написал этот код в модуль, пишет invalid outside procedure, написал в лист вроде что то делает но пишет что ексель не отвечает при этом оперативная память на неё постоянно растёт, не знаю сколько ждать нужно но сейчас жду может выведет что, стоит ли ждать больше 20 мин или это бесполезно и в коде что то не так написал? Добавлено через 30 минут Закрыл это файл и vba написал out string space
0
|
|
|
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
|
|
| 10.01.2017, 00:52 [ТС] | |
|
Hugo121, Казанский,
Вот очень маленькая модель того что я делал, в моём файле объединил серию и номер с запятой, чтоб было также как в csv файле, затем на второй лист в моём файле копировал значения с csv файла и с помощью функции ВПР находил что совпадает, а что не совпадает пишет Н/Д. По сути всё ок, но проблема что если с csv начать импорт с 2000000, то он выдаст только одну под этим номером ячейку остальные импортировать не хочет
0
|
|
|
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
|
|
| 10.01.2017, 00:56 | |
|
Не нужен "Часть гигантского файла.csv.xlsx", нужен оригинальный файл.csv но не весь, а например пара сотен строк с начала.
0
|
|
|
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
|
|
| 10.01.2017, 01:15 [ТС] | |
|
Hugo121,
Так это и есть по сути оригинал, он отличается только форматом, сюда csv загрузить нельзя, если переименуете формат тоже самое будет К тому же как вывести только определенные строки из csv файла без использования копирования? Если интересен прям оригинал в поиске пишите база данных недействительных паспортов и сразу в первой ссылке можете ее полностью скачать
0
|
|
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|||||
| 10.01.2017, 03:13 | |||||
|
Поймите наконец, что предлагаемые Вам решения НЕ БУДУТ вносить данные из csv на лист. Все будет происходить в коде, а для него крайне важны детали того, как "устроен" csv - см. #13. ![]() Это, что ли? http://services.fms.gov.ru/inf... m?sid=2000 И к чему вся секретность, если данные в открытом доступе лежат? Вот кстати уже есть решение по оптимизации поиска в этой базе: https://habrahabr.ru/post/307568/ Я ссылку на файл оттуда взял.
0
|
|||||
|
15155 / 6428 / 1731
Регистрация: 24.09.2011
Сообщений: 9,999
|
|
| 10.01.2017, 03:27 | |
|
Ну вот, пока писал пост, файл скачался и распаковался.
Разделителем строк в нем служит vblf, то есть chr(10), так что все коды с Line Input идут лесом ![]() Вот часть файла... на сегодня все.
0
|
|
|
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
|
|
| 10.01.2017, 20:31 [ТС] | |
|
Казанский,
Я говорил про свой файл, а про эту базу сразу в начале сказал как с помощью метода из статьи хабра можно проверить 5000 наименований? как вы его разделили? ну а вообще я видел информацию про разделения, но они для видимых значений, а больше миллиона он не увидит
0
|
|
| 10.01.2017, 20:31 | |
|
Помогаю со студенческими работами здесь
20
Как сохранить VBA-массив в CSV-файл без Excel Как разбить большой файл сохранив макросы во всех частях? Как разбить CSV файл на отдельные файлы Запись в CSV-файл из массива. Не является форматом csv! Огромный EXE Файл , Нужна помошь Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|