|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
|
Чтение отдельной строки из большого файла06.10.2021, 23:42. Показов 2825. Ответов 23
Метки нет (Все метки)
Т.к. из-за ограничений объема в БД нельзя хранить нужное количество исходных данных (условно большие массивы в json), то их надо перенести в текстовые отдельные файлы. Чтоб не плодить больше количество файлов хочется сделать общие файлы, где построчно будут исходные поля из БД. Т.е. в базу делается запрос, а там указывается, из какого файла и какой строки считать данные. Т.к. весь файл считывать ресурсоемко, то вопрос, как считать лишь отдельную строку (может указав не строку, а номер начального символа и длины строки)?
0
|
|
| 06.10.2021, 23:42 | |
|
Ответы с готовыми решениями:
23
Чтение большого файла excel Чтение большого json файла Чтение большого файла из потока |
|
Администратор
|
|
| 07.10.2021, 00:06 | |
|
0
|
|
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
| 07.10.2021, 00:42 | |
|
0
|
|
|
2604 / 1508 / 689
Регистрация: 23.08.2015
Сообщений: 3,839
|
||
| 07.10.2021, 00:53 | ||
|
0
|
||
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
| 07.10.2021, 02:42 | |
|
Единственное что я встречал, это проблема сохранения данных в БД посредством json_encode, когда в сохраняемых данных присутствует UNIX перенос. "Некорректно управляющий символ"
0
|
|
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
|
| 07.10.2021, 06:52 | |
Сообщение было отмечено romanrex как решение
Решение
Чтобы найти отдельную строку надо всё равно прочитать файл с начала.
Можно в БД хранить длины строк и указывать смещение в файловом указателе с помощью https://www.php.net/manual/ru/function.fseek.php для чтения с нужного места. Но это, пардон, изврат некоторый. Длинные строки JSON можно упаковывать для базы в gz-архивчики. Но лучше сменить хостинг на тот, где нет ограничений по объему базы.
1
|
|
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||||||||||
| 07.10.2021, 15:28 [ТС] | ||||||||||
|
Если каждый txt файл с json будет не объединенным для продукта, а отдельными фалами, то для некоторых продуктов количество файлов увеличится на 4, для других на 100 с лишним. В итоге от проблемы с количеством файлов я не уйду, а снова в нее упрусь. Хостинг формально "безлимитный", но лимит на одну БД - 5 ГБ. Если у меня будет больше 10 баз, то есть вероятность что и тут "безлимит" на количество будет лимитирован. Относительно лимита на объем базы объяснили так, БД расположены на скоростных носителях (возможно SSD) и ограничение как таковое свзязано именно с носителями. Т.е. при смене хостинга это ограничение останется актуальным, просто может значение будет на сколько-то выше, но глобально проблема останется. Добавлено через 58 секунд Добавлено через 11 минут Еще видел такой код, где вроде как указывается номер строки. Хотя может я и не правильно понял этот код
0
|
||||||||||
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
||
| 07.10.2021, 15:33 | ||
|
Для 3000 продуктов данные графиков занимают 42 ГБ? Нифига себе графички. Там что за данные-то, координаты каждой точки что ли? Может стоит пересмотреть формат хранения данных вообще?
Добавлено через 4 минуты На PHP это функции начинающиеся на gz, можете упаковать все файлы простым скриптиком и заценить.
0
|
||
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
|
| 07.10.2021, 15:40 [ТС] | |
|
0
|
|
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
|||
| 07.10.2021, 15:46 | |||
0
|
|||
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||
| 07.10.2021, 15:59 [ТС] | ||
|
Относительно gzip - это в плане хранения напрямую в MySQL или в файле на хостинге, где можно в 1 gzip запаковать сотню файлов и выборочно из архива доставать?
0
|
||
|
1306 / 781 / 190
Регистрация: 19.09.2020
Сообщений: 1,993
|
|
| 07.10.2021, 16:17 | |
|
Код gzip можно хранить в полях базы данных типа BINARY. Прям для каждого продукта отдельной строкой, например.
0
|
|
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
| 07.10.2021, 16:25 | |
|
Если мне надо для продуктов загружать какие то данные типа картинок (pdf и так далее).
Я просто создаю поле, которое указывает на нужную папку. И потом, при загрузке на странице, я через glob считаю данные по полю из MySQLi и загружаю всё что хочу.
0
|
|
|
Заблокирован
|
||
| 07.10.2021, 16:45 | ||
|
0
|
||
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
|||
| 07.10.2021, 16:57 [ТС] | |||
|
0
|
|||
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
||
| 07.10.2021, 17:15 | ||
|
0
|
||
|
Заблокирован
|
||
| 07.10.2021, 17:20 | ||
|
0
|
||
|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
||||||
| 08.10.2021, 17:54 [ТС] | ||||||
|
В целом все оказалось не так и сложно. Единственное, т.к. исходные файлы генерируются в C# в декстопе, пришлось повозится с поправками на метку BOM (от которой уйти никак) и увеличением длины из-за возможно символа переноса строки Environment.NewLine. Т.е. на начальный стартовый offset значение 3, и далее каждая длина +1. Определение длин и офсетов через sb_data.Length.
По скорости подгрузки данных, вроде не сильно отличается от того, что загружается из БД. Ниже проверочный код для опеределенного id продукта. Для удобства отладки поправок, выводятся первые 100 символов и последние 100 символов от подгружаемого поля для визуального контроля.
0
|
||||||
|
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
|
|
| 08.10.2021, 21:03 | |
|
Это как лужу вычерпывать вилами.
0
|
|
|
Заблокирован
|
|||
| 08.10.2021, 21:43 | |||
0
|
|||
| 08.10.2021, 21:43 | |
|
Помогаю со студенческими работами здесь
20
Чтение и запись строк большого файла
Быстрое чтение большого файла. Зависает процесс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2.
Задача: показать затраченные материалы за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом.
В качестве. . .
|
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2.
Задача: отобразить спецтехнику, которая на данный момент находится в ремонте.
Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
|
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
|
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
|
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|