Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/xxlabaza/csv-merger2
Another implementation of csv merger
https://github.com/xxlabaza/csv-merger2
Last synced: 14 days ago
JSON representation
Another implementation of csv merger
- Host: GitHub
- URL: https://github.com/xxlabaza/csv-merger2
- Owner: xxlabaza
- License: apache-2.0
- Created: 2016-02-03T12:38:37.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2016-02-03T17:26:42.000Z (almost 9 years ago)
- Last Synced: 2023-03-01T14:32:15.320Z (over 1 year ago)
- Language: Java
- Size: 12.7 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Описание #
Улучшенная версия решения [задачи](https://github.com/joesephz/interns-test/wiki), где, в отличии от [предыдущего решения](https://github.com/xxlabaza/csv-merger-java), у нас появилось неможко оперативы (!!!) и можем даже позволить себе создавать и хранить структуры данных!
Смысл решения довольно простой:
Прочитали, скажем, 100 строк из **первого файла**, распарсили их в мультимапу, например вида **Map\\>**. Тоже самое сделали со **вторым файлом**. Сравнили мапы, если есть пересекающиеся ключи - пишем сразу в **result.csv** appendo'ом.
Получившуюся мультимапу **второго файла** сериализуем на диск и читаем следующие 100 строк из **второго файла**, так же сравниваем с всё ещё **первой соткой из первого**, есть совпадения - пишем в **result.csv**. Опять мультимапу **второго файла** сериализуем в файл.
И так пока не кончится **второй файл** и у нас не образуется на диске кулёк сериализованных мультимап в виде файлов. Затем читаем следующую сотку из **первого файла** и сравниваем её, по очерёдно, с каждым куском сериализованных данных из второго файла.
```bash
$> java -jar csv-merger-1.0.0.jar -i ~/first.csv ~/second.csv -o ~/result.csv
$> ls ./tmp # аутпут представлен при чтении по 2 строки за раз
100-second.csv 150-second.csv 199-second.csv 50-second.csv
$> cat result.csv
000000011,EKH3-5IDH-DNUK,NW8U-C0IQ-WWKV
000000001,4DG1-WUX0-F16B,RLT0-DFHH-1U5U
000000015,UJ8E-G1IV-U9PS,Q0Z1-4JN9-PS7U
000000012,DS9X-1N3P-KIAW,ZPMK-N3BU-C33D
000000012,DS9X-1N3P-KIAW,M3LF-XPWB-8NI6
```