Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 31
1

Поиск по базе в формате CSV

03.06.2016, 08:24. Показов 965. Ответов 13

Собственно, задача очень проста. Есть база в формате CSV, необходимо искать в ней данные. Проблема в том, что записей больше миллиона, а число столбцов около 20, пожилому поиск затягивается иногда до нескольких минут. Возможно, проблем в том, что DelimitedText не всегда корректно парсил базу, пришлось использовать свою функцию, но я не думаю, что это настолько сильно сказалось на производительности. Может, стоит сконвертировать в другой формат? Какие еще способы оптимизации можете подсказать? Заранее спасибо
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.06.2016, 08:24
Ответы с готовыми решениями:

Сохранить книгу в формате csv
Товарищи, помогите разобраться. Хочу настроить макрос таким образом, чтобы активная книга...

Сохранить вывод в формате name.csv
Всем привет. Дали задание по проф. информатике, но у меня возникли проблемы. Само задание во...

Не сохраняет изменения в формате csv
Добрый день! я столкнулась с проблемой: не сохраняются изменения, сделанные в csv формате. я...

Сохранить csv в формате xls
Подскажите, пожалуйста, как в Excel сохранить открытый csv-файл как xls? У меня открывается...

13
3949 / 3364 / 875
Регистрация: 29.08.2013
Сообщений: 21,982
Записей в блоге: 2
03.06.2016, 08:27 2
Цитата Сообщение от Kollapser Посмотреть сообщение
пожилому поиск затягивается иногда до нескольких минут.
как ищите?

к CSV файлу можно подключится как к источнику данных через ODBC драйвер
но конечно хорошо бы утянуть этот файл в БД, сделать индексы и искать
0
5083 / 3963 / 1309
Регистрация: 14.04.2014
Сообщений: 18,242
Записей в блоге: 18
03.06.2016, 09:39 3
если поиск, однозначно лучше в базу
можно взять что-нибудь локальное типа
FireBird embedded или SQLite
0
2750 / 1560 / 522
Регистрация: 29.05.2013
Сообщений: 6,768
03.06.2016, 09:59 4
Решений довольно много. Если принципиально решение именно в дельфи, то желательно перегнать данные из этого формата в более удобный. Если же нужен просто быстрый поиск, то можно пойти другим путем. Установить поисковую систему типа DTSearch, сделать индекс по этому файлу и получите очень быстрый поиск.
0
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 31
03.06.2016, 10:59  [ТС] 5
Цитата Сообщение от qwertehok Посмотреть сообщение
как ищите?
Просто поиском подстроки в строке
Цитата Сообщение от Пытливый Посмотреть сообщение
Если принципиально решение именно в дельфи
Да, потому что кроме поиска нужно еще несколько функций
Цитата Сообщение от krapotkin Посмотреть сообщение
можно взять что-нибудь локальное типа
FireBird embedded или SQLite
Пытаюсь импортировать из cvs в sqlite, но пока не разобрался
Через sqlite3.exe, через .import, вроде, работает, но я не понял, он не должен сам файл базы создавать?
А в Delphi не могу найти такую функцию
0
5083 / 3963 / 1309
Регистрация: 14.04.2014
Сообщений: 18,242
Записей в блоге: 18
03.06.2016, 11:11 6
базу и таблицу в ней создайте заранее
полагаю, у вас же CSV одной и той же структуры всегда?
0
3949 / 3364 / 875
Регистрация: 29.08.2013
Сообщений: 21,982
Записей в блоге: 2
03.06.2016, 11:12 7
Цитата Сообщение от Kollapser Посмотреть сообщение
Пытаюсь импортировать из cvs в sqlite, но пока не разобрался
попробуйте бесплатную SQLiteStudio (http://sqlitestudio.pl)
в ней хороший импорт
0
5083 / 3963 / 1309
Регистрация: 14.04.2014
Сообщений: 18,242
Записей в блоге: 18
03.06.2016, 11:37 8
я так понимаю, задача - импорт через делфи?
0
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 31
03.06.2016, 12:06  [ТС] 9
Цитата Сообщение от krapotkin Посмотреть сообщение
я так понимаю, задача - импорт через делфи?
Именно, и последующий поиск

Добавлено через 28 секунд
Цитата Сообщение от qwertehok Посмотреть сообщение
попробуйте бесплатную SQLiteStudio
Что-то не справилась она с моей базой - упала
0
5083 / 3963 / 1309
Регистрация: 14.04.2014
Сообщений: 18,242
Записей в блоге: 18
03.06.2016, 12:09 10
разбор CSV - построчно,
для построчного чтения файла используйте TStreamReader, для разбора каждой полученной строки - TStringList
распихиваете по полям элементы листа и идете дальше
0
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 31
03.06.2016, 13:02  [ТС] 11
Цитата Сообщение от krapotkin Посмотреть сообщение
для построчного чтения файла используйте TStreamReader, для разбора каждой полученной строки - TStringList
распихиваете по полям элементы листа и идете дальше
Сейчас я так и делаю
Но поиск по базе очень долгий, в этом-то и проблема
Посоветовали вот перевести в SQLite, но пока не выходит
0
5083 / 3963 / 1309
Регистрация: 14.04.2014
Сообщений: 18,242
Записей в блоге: 18
03.06.2016, 15:43 12
еще раз
у вас каждый раз новый CSV
или один и тот же?

если новый, то всяко разбирать
вот для последующего поиска надо запихать его в базу, чтобы использовать индексный поиск

если разбор идет долго, кидайте код, будем смотреть...
0
0 / 0 / 0
Регистрация: 18.12.2013
Сообщений: 31
03.06.2016, 16:09  [ТС] 13
Цитата Сообщение от krapotkin Посмотреть сообщение
у вас каждый раз новый CSV
или один и тот же?
Один и тот же
0
5083 / 3963 / 1309
Регистрация: 14.04.2014
Сообщений: 18,242
Записей в блоге: 18
03.06.2016, 20:25 14
тогда один раз программой переведите в базу и забудьте ...
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.06.2016, 20:25

Сохранение екселя из Access в формате csv
Пытаюсь из Access кодом vba сохранить файл Excell в формате .csv Выдает ошибку "Метод сохранения...

Сохранение формы без шапки в *.csv формате
Здраствуйте помогите пожалуйста. У меня есть форма отчета в excel формате надо сделать кнопку...

Загрузка массива из текстовых файлов в формате csv
Необходимо написать приложение позволяющее реализовать множество данных представляет собой массив...

Автоматическая выгрузка товаров с сайта в формате CSV
Здравствуйте, форумчане. Интересует такой вопрос, есть ли подобное решение для 1С-Битрикс:...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru