|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Друзья, прошу помочь! У самого нечего не получается. Всевышний свел меня с FB. Стоит задача: 1. Обратиться с запросом в стороннюю БД; 2. Обратиться в свою БД; 3. Сопоставить результаты и записать в свою БД нужные строки. Изучил у нас на форуме вопрос-1. Это получается. Далее пытаюсь создать структуру, массив или нечто иное, чтобы выгрузить туда результат запроса (результат запроса - небольшая таблица). Ищу-свищу и уже очень сильно сомневаюсь, что я задумал не ерунду в части архитектуры FB. Как правильно решить эту задачу. Подскажите алгоритм. Более подробные данные предоставлю, какие будут нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 12:19 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Begimot441Подскажите алгоритм. Merge join. Открываешь два резалт-сета с нужной сортировкой, фетчишь по одной записи, сравниваешь. По результатам сравнения выполняешь нужные операции. Повторять до конца обоих выборок. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 12:28 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Спасибо! Но я спрошу немного подробнее. "резалт-сет" - уточните, пож-та, это то, что я понимаю в своем тестовом фрагменте? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 13:39 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Begimot441"резалт-сет" - уточните, пож-та резалт-сет (google "result set") это результат работы запроса SELECT. Набор записей, получаемых по одной с помощью функции "fetch". Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 13:46 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Про функцию fetch я прочел. Теперь знаю, спасибо! Но, насколько я понял, для этого необходимо объявить курсор на запрос типа Код: plsql 1.
Не могу понять, как в моем случае, когда запрос в стороннюю БД, установить на нее этот курсор. Направьте далее, пож-та! ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 14:04 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Неявный курсор: FOR SELECT (FOR EXECUTE STATEMENT в твоём случае). А вообще тебе стоило бы заранее обозначить язык в котором ты пытаешься это сделать. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 15:13 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Про неявный курсор. Не могли бы Вы написать чуть подробнее для моего случая? Не складывается и примеров в инете я не нашел. Спасибо! На каком языке я пытаюсь? У меня есть возможность только направлять запросы в БД FB. Отсюда и тот фрагмент, что я подготовил. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 15:59 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Читай прикреплённые темы, там есть ссылка на Language Reference. На русском. Запросы ты "направляешь" телепатически?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 17:44 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Удивительное дело! Вы мне ОЧЕНЬ помогаете и сегодня, в процессе консультаций с Вами, я уже почти нашел РАБОЧЕЕ решение. Но, с другой стороны, я очень невнятно понимаю то, что Вы мне пишите. Но я буду продолжать консультации настойчиво) Т.к. процесс идет. 1. Я долго думал, но так и не понял, что такое "прикрепленные темы" и где там ссылки. 2. Запросы я направляю, конечно, "не телепатически", а из стороннего программного приложения (если Вы это имели в виду). ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 18:46 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Begimot441 1. Я долго думал, но так и не понял, что такое "прикрепленные темы" и где там ссылки. Это вот тут https://www.sql.ru/forum/interbase Первые ветки, с названиями: Важно: ANN Руководство по языку SQL СУБД Firebird 2.5 Важно: ANN Руководство по языку SQL СУБД Firebird 3.0 Важно: ANN Руководство по языку SQL СУБД Firebird 4.0 Важно: ЧИТАТЬ__ВСЕМ,__КТО__ПРИШЕЛ__СЮДА__В__ПЕРВЫЙ__РАЗ! Эти темы, и еще парочка, являются прикрепленными к верху списка сообщений, и не вытесняются со временем вниз. Begimot441 2. Запросы я направляю, конечно, "не телепатически", а из стороннего программного приложения (если Вы это имели в виду). Что бы давать вам советы которыми вы могли бы воспользоваться, нужно понимать какие возможности у вас есть. "из стороннего программного приложения" нисколько не проясняет ситуацию. Не все возможности могут быть доступны их любого произвольного приложения. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 19:28 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
То что вы пытаетесь сделать - изнутри одной базы выполнить запрос к другой, потом чего-то там сравнить и сделать - является не типичным видом взаимодействия. Исходя из того что запрос в первой базе инициируется чем-то извне, в большинстве случаев удобнее выполнить запросы именно из той программы к обеим базам, и по результатам сравнения программа запишет нужные данные в нужную базу. Для того что бы давать пригодные вам советы, нужно понимать из какого языка программирования вы это делаете, какие способы работы с сервером Firebird существуют для этого языка, какими из них вы пользуетесь, и почему именно этим. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 19:35 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
И хорошо бы еще знать какая версия Firebird у вас используется. Нет смысла давать вам советы которые работают только на новых версиях, если у вас старая. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2021, 19:38 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
fraks, Постараюсь указать все то, что понимаю. Тем более, что у меня не получилось реализовать то, что я задумал. 1. Версия FB 2.5.6.27020(x64) 2. ОС Win10 сборка 19041.1052 3. Изначально при работе с БД я использую FlameRobin 0.9.3.1186200. Но это не то "приложение" о котором я писал. Немного о "приложении", которое должно вызывать запрос. Я его называть не буду, т.к. это очень специализированное и развивающее ПО. Оно умеет получать данные через SQL-запросы посредством ODBC-соединение. Через такое соединения я установил коннект к БД FB. Далее, в этом "приложении" есть "место для ввода SQL-запроса". Что-там происходит внутри этого "приложения" для меня закрыто. Так вот сегодня я экспериментально понял, что это "приложение" не понимает, когда я в "поле запроса" (позвольте мне так называть) ставлю EXECUTE. Классические команды SQL-запросов он понимает и принимает (SELECT, INSERT и т.п.). Я немного почитал литературу, что вы мне советовали и предварительно сделал вывод, что это "приложение" не может работать с PSQL. Но я не уверен, что я прав, естественно, т.к. я не специалист, как вы понимаете, в БД вообще. Просто по работе столкнулся с такой вот необходимостью извернуться... Еще раз немного о том, что я делаю и как я вижу результат. По сути, я пытаюсь расширить функциональность этого "приложения". Это "приложение" собственно и работает с БД FB, но использует ее только в определенных целях, а мне нужно больше. Вообще там несколько БД, т.е. несколько файлов .FBD Важный момент - это производственная задача и мне крайне нежелательно вводить новые сущности (свои рукописные приложения, дополнительные БД и т.п.). Архитектура установлена не мной и обсуждать тему "как я все неоптимально, как лучше поменять архитектуру" смысла нет. Такой задачи я себе не ставлю. Т.о., у меня есть план написать "запрос", который: 1. Прочитает данные из первой БД; 2. Прочитает данные из второй БД; 3. Сопоставит данные; 4. Запишет нужные данные во вторую БД. Пока мои знания (которые растут с вашей помощью) и практические опыты выводят меня на следующую схему: 1. Во второй БД написать хранимую процедуру, которая, по сути и будет все делать, что я выше перечислил; 2. Эту хранимую процедуру вызывать из "приложения" через SELECT. Предварительно я попробовал, вроде, получается. Таким образом мне не нужно плодить ничего постороннего в части "неродных" модулей, не нужно делать изменений. Буду рад любым дальнейшим консультациям! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2021, 13:33 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Begimot441, что тут сложного? 1. Создать ХП внутри которой EXECUTE STATEMENT обращается к внешней БД и возвращает набор данных (это примерно твой EXECUTE BLOCK) 2. Написать MERGE запрос который делает SELECT к ХП и необходимые сравнения с целевой таблицей, если строк нет добавляет их, если есть, но они отличаются - обновляет Собственно всё ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2021, 17:29 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Симонов Денисчто тут сложного? Сложно понять зачем переливать данные из первой БД во вторую если приложение способно обращаться к первой базе непосредственно. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.06.2021, 18:08 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Симонов Денисчто тут сложного? Сложно понять зачем переливать данные из первой БД во вторую если приложение способно обращаться к первой базе непосредственно. Друзья, тут ответ простой. "Приложение" тупенькое. Оно может запросить данные, показать их, цветом подкрасить. А обработка данных в "приложении" весьма ограничена. Вот я и выношу обработку данных их двух БД запрос внутри самой FB (ведь она у меня есть) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2021, 04:10 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Begimot441 Оно может запросить данные, показать их, цветом подкрасить Вытащи данные из обеих БД к себе и сравни. Дольше будешь гонять их "тудой-сюдой изнутря" какой либо СУБД. в 14-м году так сталкивал DB2 & Firebird. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2021, 07:06 |
|
Выгрузка из запроса в массив, обработка, вставка строк. Помогите с алгоритмом
|
|||
---|---|---|---|
#18+
Как вариант идеи, сделать все по-простому на сервере: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36.
... |
|||
:
Нравится:
Не нравится:
|
|||
28.06.2021, 10:42 |
|
|
start [/forum/topic.php?fid=40&msg=40080280&tid=1560002]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 284ms |
0 / 0 |