Как распарсить БД?
-
Суть получаем строку из БД баса, она сохраняется в виде массива.
В базе данных есть несколько столбцов: id, email, password, proxy, fingerprint, cookies и id который присваеват сам бас
Сначала я хотел "распарсить как строку" но когда бас берёт сроку из БД то разделитель ставит в виде ":" а этих символов "разделителей" в cookies и fingerprint море. И что-то я залип... Как мне содержание столбцов положить в разные переменные?
На первом скрине то что в базе лежит на втором то что из базы получаю в переменную
П.с. Всё было хорошо пока не добавил fingerprint и cookies )) там сами знаете есть все символы да и регулярное выражение тоже пока особо не составляется...


-
Кто-нибудь пожалуйста подскажите гайд по базам данных в БАС.
У меня с ними уже мозг взрывается.
По мимо того что распарсить не могу ещё оказывается из переменной с типом данных INT нельзя записать в ячейку с типом данных INT. Но если число вять не из переменной а просто набить с клавиатуры то всё в порядке и этот же кубик записывает -
@Oleg_Pvk said in Как распарсить БД?:
Кто-нибудь пожалуйста подскажите гайд по базам данных в БАС.
У меня с ними уже мозг взрывается.Такого гайда нет
По мимо того что распарсить не могу ещё оказывается из переменной с типом данных INT нельзя записать в ячейку с типом данных INT. Но если число вять не из переменной а просто набить с клавиатуры то всё в порядке и этот же кубик записывает
В BAS вы указываете тип поля, а не тип данных. Для указания переменной используйте тип "sting" или "expression"
-
@Oleg_Pvk said in Как распарсить БД?:
Сначала я хотел "распарсить как строку" но когда бас берёт сроку из БД то разделитель ставит в виде ":" а этих символов "разделителей" в cookies и fingerprint море. И что-то я залип... Как мне содержание столбцов положить в разные переменные?
Данные из базы возвращаются в виде csv строки, парсите её одноимённым действием. Проблем с управляющими символами в значениях не будет
-
@Fox есть проблема. Пробовал "парсить строку CSV" ответ от БАС ошибка "Поток №1 : _csv_parse: Аргумент "Строка" должен быть строкой, а не массивом"
То есть применяя кубик "получить строку из базы по критериям" приходит массив из одной строки...Спасибо! Вы мне очень помогли ) Получилось.
Может кому-нибудь пригодится.
Из базы "получить элемент по критерию" мы получаем массив строк из базы подходящих под критерию. Если строка одна то массив будет состоять из одного элемента. Далее выбранный (или единственный) элемент массива нужно преобразовать в строку. Я сделал это с помощью "установить переменную" и конструктора. Далее в переменной у нас уже лежит строка в формате CSV её можно распарсить с помощью одноимённого кубика "парсить CSV строку"Появился ещё один вопрос, с помощью "дата сейчас" я записываю в переменную дату в привычном виде "2022-06-19T15:18:01" далее её сохраняю в базу и она изменяется на "01.01.1970 5:00" если стоит тип данных date на колонке в дате и на "Sun Jun 19 2022 22:12:36 GMT+0500 (RTZ 4 ("
То есть в первом случае он считает от "начала исчисления" и не воспринимает в принципе то что передает кубик "дата сейчас" во втором случае он добавляет, преобразует и добавляет лишнее. Особенно не знаю откуда берётся " (RZT 4 ("
Я хотел текущую дату преобразовать в миллисекунды и её записать в базу. А чтобы дата оставалась числом ставил тип данных над столбиком INT но когда пробую записать в базу число с помощью кубика "изменить одну запись" и ставлю источник данных переменную с датой в миллисекундах то тип поля автоматический устанавливается expression и в базу нечего не записывается. Я предполагаю что нужно указать что эта переменная содержит число и где-то я видел прямое преобразование на java (пока не нашёл). Там было что-то вроде [number[переменная]] я хотя бы в правильном направлении мыслю ?
Мне дата нужна для сортировки. Чтобы не посещать сайт с аккаута если он был раньше чем час назад. Для этого я хотел дату перевести в миллисекунды и указать чтобы он брал строки которые меньше чем из "даты сейчас" вычесть "3600000" (что равняется 1 часу) Тогда я буду получать массив элементов соответствующих этому критерию. Брать из массива первый элемент. Обрабатывать его. Обновлять дату. И снова по кругу. Единственное что меня смущает так это то что пока у меня обрабатывается строка из базы её может взять второй поток и начать обрабатывать. А мне это совсем не надо...Заранее благодарю за терпение и потраченное время на ответы. На данный момент это единственное место где можно найти ответы. Пробовал поискать в рамка программирования на java но пока мало информации "впитал" даже не могу корректно задать поисковый запрос по программированию на java чтобы найти нужную информацию
П.с. надеюсь кнопка благодарности у вас в подписи работает. Воспользовался ;-) -
В общем я не понимаю что происходит с датой в базе данных BAS. Подскажите кто знает что там происходит.
Суть: база данных всё таже что и на скринах выше. В ней есть столбик last_visit_date тип данных установлен date.
Чтобы записать туда дату следую по такому пути:- Кубиком "дата сейчас" узнаю текущую дату и кладу её в переменную DATE_NOW
- Кубиком "дату в миллисекунды" преобразую DATE_NOW в число равное прошедших миллисекунд от таймстамп
- Кубиком "изменить одну запись в базе" записываю в ячейку last_visit_date число миллисекунд из DATE_NOW
- Иду в меню БАЗА>Менеджер данных нахожу нужную строку и ячейку, вижу там дату в формате "21.06.2022 13:33:00"
- Копирую. Перехожу на следующую строку вставляю данный из прошлой и меняю год с 2022 на 2023
- Возвращаюсь к созданию скрипта. С помощью кубика "получить запись по критерию" и установленного в нём фильтра по колонке "last_date_visit" с параметром "раньше чем" и число в миллисекундах берём из переменной DATE_NOW я не получаю ничего. Хотя в базе есть дата на год раньше чем в переменной DATE_NOW.
НО! Если фильтр настроить "позже чем" и указать туже переменную "DATE_NOW" то он найдёт одну запись, как ему и положено.
Вопрос: Что я делаю не так? Почему не ищет записи в "будущем"? Нельзя через менеджер данных вносить правки в дату?
-
@Oleg_Pvk said in Как распарсить БД?:
Пробовал поискать в рамка программирования на java но пока мало информации "впитал" даже не могу корректно задать поисковый запрос по программированию на java чтобы найти нужную информацию
java и javascript - не отдно и тоже.
Тебе нужно второе.
-
@kingsize said in Как распарсить БД?:
@Oleg_Pvk
А зачем ты хранишь дату в поле date
Храни в милисекундах в int.А с int ещё интересней история!
- Записываю в переменную дату в миллисекундах
- Кубик "изменить одну запись" вставляю индентификатор строки, в поле с столбиком last_visit_date вставляю переменную с миллисекундами (я проверил там действительно число в типе INT)
- Нажимаю изменить и ничего! В базе остается ноль
Если в поле вместо переменной написать число то оно попадает в базу
до сих пор не нашёл как это победить.
Подскажите пожалуйста если знаете
Методом эксперементов понял что в базу можно сохранить число максимум из 10 знаков, а дата в милисекундах состоит из 13 знаков. И если я правильно понимаю то это связанно с типом INT которое в 32бит системе может быть максимум 2 147 483 648. То есть какраз 10 знаков.
По этому я пока что не знаю как быть с датами но INT уже точное не подходит -
@Oleg_Pvk said in Как распарсить БД?:
В общем я не понимаю что происходит с датой в базе данных BAS. Подскажите кто знает что там происходит.
Суть: база данных всё таже что и на скринах выше. В ней есть столбик last_visit_date тип данных установлен date.
Чтобы записать туда дату следую по такому пути:- Кубиком "дата сейчас" узнаю текущую дату и кладу её в переменную DATE_NOW
- Кубиком "дату в миллисекунды" преобразую DATE_NOW в число равное прошедших миллисекунд от таймстамп
- Кубиком "изменить одну запись в базе" записываю в ячейку last_visit_date число миллисекунд из DATE_NOW
- Иду в меню БАЗА>Менеджер данных нахожу нужную строку и ячейку, вижу там дату в формате "21.06.2022 13:33:00"
- Копирую. Перехожу на следующую строку вставляю данный из прошлой и меняю год с 2022 на 2023
- Возвращаюсь к созданию скрипта. С помощью кубика "получить запись по критерию" и установленного в нём фильтра по колонке "last_date_visit" с параметром "раньше чем" и число в миллисекундах берём из переменной DATE_NOW я не получаю ничего. Хотя в базе есть дата на год раньше чем в переменной DATE_NOW.
НО! Если фильтр настроить "позже чем" и указать туже переменную "DATE_NOW" то он найдёт одну запись, как ему и положено.
Вопрос: Что я делаю не так? Почему не ищет записи в "будущем"? Нельзя через менеджер данных вносить правки в дату?
Скорее всего через менеджер данных вы вносите данные в неправильном формате. Попробуйте заполнять дату исключительно через действия, а необходимые даты формировать через модуль "Дата и время"