Как осуществить поиск по файлу CSV?
Как в JS осуществить поиск по csv файлу, не получая каждую строку найти row'ы в которых есть ключевое слово(отрывок слова) которые я ввел в поиске.
Если получение каждого row'a не будет тормозить то скажитеи расскажите оптимальный способ поиска.
Дополнительно:
Ответы:
внести в бд с индексами и всем прочим.
csv обменный формат, не для работы.
вариант2: прикостылить к plaintext csv какойнить индекс :)
- К счастью там есть что то типа индексов (номера какие то которые увеличиваются на 1).
- Yukan Mukimura, я не про содержимое файла :)
поиск по csv ты все делаешь потоком, т.е. читаешь весь файл от корки до корки.если поиск предстоит частый, то csv стоит загрузить в базу данных, и проиндексировать по соответствующим полям. поиск будет в разы быстрее - смотри сравнения поиска с индексом.
иного не дано :)
убыстрить csv не возможно, он не предназначался для быстрой работы с данными.
Ты действительно из JavaScript собираешся работать с CSV файлом? Просто обычно js работает с небольшими
json документами которые прилетает от back-end и не требуют тяжелых поисковых операций.
Я вижу лишь одно удачное коробочное решение - разбить твой документ на key / value и (ключевая часть
и все остальное) и загрузить это в localstorage как тут пишут https://developer.mozilla.org/en-US/docs/Web/API/W...
- Я понимаю что это звучит тупо, но если бэку надо сделать поиск по csv?
- Yukan Mukimura, на каком языке back написан?
- mayton2019, ну я имел ввиду что бэк тоже написан на js
- Ну тогда задача состоит из двух частей. Первое - потоковая загрузка CSV (куда-то)
Вот поиск подсказывает 2 пакета
npm install fs csv-parser npm install fs fast-csv
npm install fs csv-parser npm install fs fast-csv
И второе - это запихнуть этот поток в базу SQLite например
npm install sqlite3
Вот код поищи сам. Миллион примерв как грузить данные в SQLite.
- mayton2019, с первым способом есть проблема в виде кодировки , майкрософты г****** ставят свои кодировки , читать с помощью windows-1255 невозможно fs.createReadStream('./SPR_31.csv') . А с пакетом windows-1255 возникла проблема , показывает что я неправильно подключил чтоли.
- Yukan Mukimura я не большой знаток NodeJS. Но в таких случаях я смотрю параметры конструктора стрима. Там обычно есть второй параметр encoding. Посмотри.
И если нету - ну... тогда бери текстовые средства и конверть из 1255 в utf-8
- mayton2019, там есть но windows-1255 нету в табе IDE даже если просто ввести не читает.
- Ничего непонятно. Ты лучше про кодировки задай отдельным вопросом.
- mayton2019, Я просто поменял через notepad, так как нет необходимости так мучаться.
- Yukan Mukimura, если это разовая задача, то вообще не парьтесь.
Можно весь csv прочитать как строку, если в память влазит, потом split('n').map(row => row.split(';') или какой там разделитель полей.
Дальше работать как с массивом.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для осуществления поиска по файлу CSV вам понадобится использовать язык программирования, который поддерживает работу с CSV файлами, такой как PHP. Ниже приведен пример кода на PHP, который поможет вам осуществить поиск по файлу CSV:
// Указываем путь к файлу CSV $file = 'file.csv'; // Открываем файл для чтения $handle = fopen($file, 'r'); // Проверяем, удалось ли открыть файл if ($handle !== false) { // Считываем содержимое файла построчно while (($data = fgetcsv($handle, 1000, ',')) !== false) { // Пример поиска по определенному столбцу (например, столбец с индексом 1) if ($data[1] == 'значение_для_поиска') { // Найденное значение echo 'Найдено значение: ' . $data[1] . '<br>'; } } // Закрываем файл fclose($handle); } else { echo 'Ошибка открытия файла'; }
В данном коде мы открываем файл CSV для чтения, считываем его содержимое построчно и осуществляем поиск по нужному столбцу (в данном случае по столбцу с индексом 1) на определенное значение. Если значение найдено, то выводим его на экран.
Не забудьте заменить 'file.csv' на путь к вашему файлу CSV и 'значение_для_поиска' на значение, которое вы ищете.
Таким образом, данный код поможет вам осуществить поиск по файлу CSV и найти нужные данные.