|
-8 / 1 / 2
Регистрация: 04.01.2009
Сообщений: 121
|
|
Чтение отдельной строки из большого файла06.10.2021, 23:42. Показов 2742. Ответов 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
|
|
|
2600 / 1504 / 689
Регистрация: 23.08.2015
Сообщений: 3,804
|
||
| 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
Чтение и запись строк большого файла
Быстрое чтение большого файла. Зависает процесс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|