Как осуществить поиск по файлу CSV?

Ссылка скопирована
1 ответ

Как в 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(';') или какой там разделитель полей.
    Дальше работать как с массивом.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Роман IT Ответ

Для осуществления поиска по файлу 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 $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 и найти нужные данные.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно