Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.57/88: Рейтинг темы: голосов - 88, средняя оценка - 4.57
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34

Как разбить огромный csv файл

30.12.2016, 14:33. Показов 19507. Ответов 51

Студворк — интернет-сервис помощи студентам
Добрый день, помогите решить задачу: есть ексель файл на 5000 строк и есть огромный csv файл на 1,16 Гбайт, нужно найти совпадающие значения в этих файлах пробовал через функцию ВПР находится все до 1000000 строк, а больше ексель не показывает так как стоит ограничение в этом пределе, а сам csv файл предположительно на 50000000 строк я хочу его разбить на 50 меньших файлов и по отдельности произвести поиск совпадающих строк, как это можно сделать? Или подскажите пожалуйста другой способ найти совпадающие строки с моим маленьким файлом и этим огромнейшим csv файлом
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.12.2016, 14:33
Ответы с готовыми решениями:

Как разбить файл на две части, разархивировать и изменить вторую часть, а потом собрать файл обратно?
Здравствуйте! Хочу поднять тему Ципиховича Эндрю (в праве поднять тему отказано: новый вопрос, новая тема - примечание модератора). ...

Разделить огромный txt файл на куски и поместить в различные книги excel
Здравствуйте, уважаемые форумчане! У меня есть огромный файл txt, который нужно разделить на части и эти части поместить в книги excel....

Как сохранить в csv utf8 кодировки файл из exсel?
Как сохранить в csv utf8 кодировки файл из exel?

51
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
12.01.2017, 14:55
Студворк — интернет-сервис помощи студентам
Можно сформировать базу данных недействительных паспортов и в Excel, занимать по объему ~ 600Мб. Сократить можно и еще если записи хранить в бинарном варианте.
0
914 / 562 / 88
Регистрация: 13.02.2014
Сообщений: 2,082
12.01.2017, 15:04
Любым скриптовым языком.
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
12.01.2017, 15:54
Вообще по уму должен был бы быть онлайнсервис под это дело, чтоб оперативно проверялось. Ибо даже если каждую ночь качать свежих 1.5 гига паспортов - всё равно можно что-то пропустить.
0
3218 / 967 / 223
Регистрация: 29.05.2010
Сообщений: 2,087
12.01.2017, 16:41
Цитата Сообщение от Hugo121 Посмотреть сообщение
должен был бы быть онлайнсервис
Так он на сайте есть, ссылку Казанский дал.
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
12.01.2017, 17:51
Я туда не заходил, подумал что там только файл
Этот сервис не то, что я бы хотел видеть, это только по одному и ещё капча...
0
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
13.01.2017, 00:02  [ТС]
Hugo121, toiai,
Ребят вы в каком екселе делали, у меня дома 2007 и вот результат этого макроса, как бы он работает, в екселе пишет что не отвечает она явно с большими данными работает, но выдает только такое, хотя скопировал с 1.csv строку которая там есть

Могли бы вы скинуть на почту aroma4s@yandex.ru ваш рабочий файл, а то я даже не понимаю что не так
Миниатюры
Как разбить огромный csv файл  
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
13.01.2017, 09:27
Лучший ответ Сообщение было отмечено aroma4s как решение

Решение

Ну нормально всё, работает
Чтоб не подвисало и можно было бы параллельно читать форумы, и видеть процесс - замените всё на это:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Option Explicit
 
Sub tt()
    Dim a, i&, s$, d As Object
 
    a = ActiveSheet.UsedRange.Columns(3).Resize(, 2).Value
    a(1, 1) = "Результат проверки по базе"
    Set d = CreateObject("scripting.dictionary"): d.comparemode = 1
 
    For i = 2 To UBound(a)
        d.Item(Format(a(i, 1), "0000") & "," & Format(a(i, 2), "000000")) = i
        a(i, 1) = Empty
    Next
 
 i = 0
    With CreateObject("Scripting.FileSystemObject").OpenTextFile(ThisWorkbook.Path & "\1.csv", 1)
        Do Until .AtEndOfStream
            s = .Readline: i = i + 1
            If d.exists(s) Then a(d.Item(s), 1) = "негодный паспорт"
            If i Mod 100 = 0 Then
                Application.StatusBar = "Проверка паспортов, обработка строки файла " & i ' чтоб видеть процесс
                DoEvents
            End If
        Loop
    End With
 
    [h1].Resize(UBound(a), 1) = a
    Application.StatusBar = False
End Sub
Обратите внимание на нижнюю рамку окна Экселя при работе скрипта. Если мигает слишком быстро - можно mod 100 заменить на mod 1000
0
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
13.01.2017, 09:55  [ТС]
Hugo121, ну список же результатов не появляется, как он у вас воще выглядит?
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
13.01.2017, 10:03
Как не появляется? Вижу ведь новую шапку и у одного паспорта запись что он негодный.
Ну а если все годные - то только шапка и будет.
Ну можно конечно всем годным записать что они годные - тогда вместо строки
a(i, 1) = Empty
напишите в коде
a(i, 1) = "годный"
0
1 / 1 / 0
Регистрация: 07.05.2013
Сообщений: 34
13.01.2017, 11:56  [ТС]
Hugo121,жееесть) спасибо тебе огромное все заработало, ты освободил меня от кучи рутиных действий)) а можешь скинуть теорию по этим кодам, хочу разобраться что как работает)
0
6997 / 2895 / 555
Регистрация: 19.10.2012
Сообщений: 8,803
13.01.2017, 12:49
Вся теория давно описана Уокенбахом например.
Но вопрос про стандарт этих номеров так и остался открытым - т.ч. я за возможный брак в работе не отвечаю.
0
13.01.2017, 13:28

Не по теме:

Цитата Сообщение от aroma4s Посмотреть сообщение
хочу разобраться что как работает
Если с этим хоть иногда работаете, то давно уже надо было все изучить.
Вопрос простой, а пришлось разжевывать на 3-х листах.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.01.2017, 13:28
Помогаю со студенческими работами здесь

Как сохранить VBA-массив в CSV-файл без Excel
Как можно сохранить VBA-массив в CSV-файл без использования Excel? Сейчас я сначала вставляю данные из VBA-массива в Excel, а затем...

Как разбить большой файл сохранив макросы во всех частях?
Есть необходимость разбить этот файл на несколько файлов (около 50), причём с сохранением в каждом файле макросов и форм. Соответсвенно...

Как разбить CSV файл на отдельные файлы
Всем привет, кто может подсказать решение, как разбить CSV файл состоящий из 100000 строк, на разные CSV файлы по такому принципу: в...

Запись в CSV-файл из массива. Не является форматом csv!
В общем искал работу... Дали тестовое написать парсер для сайта с выводом информации в csv-файл. Всё написал, сбросил, пришёл ответ что у...

Огромный EXE Файл , Нужна помошь
И так , ситуация такая , есть программа , которая берет файл(любой) и записывает его в конце другой программы(отныне шаблон) , которая...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
52
Ответ Создать тему
Новые блоги и статьи
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru