|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Добрый день. Напомните пожалуйста как заполнить данные в таблице из другой БД. Есть БД в которой храниться ФИО полностью. назовем БД - FIO.FDB и таблицу family, поля fam, im, otch. Нужно в текущую БД тоже в поля fam, im, otch прописать данные из БД fio.fdb Ключевое поле связка - app_num Где-то тут были сообщения как, но не смог найти. Помогите вспомнить. -------------------------- Firebird 3.0.1.32609; IBExpert 2017.3.12.1; Windows 10 32-bit; 4Gb RAM; SSD 512Mb + HDD 1 Tb; Настройки по умолчанию Среда разработки: Delphi XE2 + FIBPlus 7.4 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 11:01 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
execute statement ... on external ... Запустит клиента от имени сервера и выполнит указанный запрос к указанной БД. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 11:07 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 11:46 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Gallemar, а зачем тебе для SELECT запроса автономная транзакция? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 11:58 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Gallemar, Спасибо. В IBExpert сработало. Сейчас в программе через FIBScript попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 12:22 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, Интересно как-то получается. У меня сейчас, в делфи, при импорте из ДБФ по каждой строке ДБФ открывается отдельный запрос, который из другой БД вытаскивает мне ФИО полностью по app_num. Значения присваиваются параметрам и делается инсерт в текущую БД. Сделал по рекомендации Gallemar. Получилось в 2 раза дольше. Можете подсказать почему так происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 13:38 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, рекомендацию Gallemar пока тестирую в IBExpert ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 13:39 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrushakrush, Интересно как-то получается. У меня сейчас, в делфи, при импорте из ДБФ по каждой строке ДБФ открывается отдельный запрос, который из другой БД вытаскивает мне ФИО полностью по app_num. Значения присваиваются параметрам и делается инсерт в текущую БД. Что такое отдельный запрос? От чего отдельный? Конечно, "дельфи тут никто не знает", но с примерами кода дело пойдет быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 13:51 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
15.02.2018 13:38, akrush пишет: > У меня сейчас, в делфи, при импорте из ДБФ... а в африке негры не черного цвета. оттенки разные у них. а ДБФ не FireBird. а мягкое с тёплым сравнивать без толку. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 13:53 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, потому что кто-то страдает фигнёй. Если на каждую запись одного резалтсета лазить за данными в другую БД, то проще повесится. Особенно учитывая что пока что пула внешних соединений нет (в 4.0 обещают). Собственно установка соединения с БД один из самых дорогих ресурсов. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:04 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrushУ меня сейчас, в делфи, при импорте из ДБФ по каждой строке ДБФ открывается отдельный запрос, который из другой БД вытаскивает мне ФИО полностью по app_num. Значения присваиваются параметрам и делается инсерт в текущую БД.Сколько миллионов записей нужно за раз вытаскивать? С какой периодичностью? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:08 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Ivan_Pisarevsky, до 200тыс. 1 раз в месяц ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:12 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
В принципе немного и не часто, но озадачиться внешними таблицами (EXTERNAL TABLE) уже можно. Если в дбф-ку сложить только текстовые поля, а в базе задекларировать внешнюю таблицу с CHAR полями, то внешняя таблица будет очень похожа на дбф-ку с откушенным заголовком. Ну а дальше одним запросом все вытаскивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:21 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrushСейчас в программе через FIBScript попробую. интересно, зачем надо лезть через из приложения первый сервер ко второму, когда можно напрямую сделать коннект ко второй БД? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:22 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
kdvakrushСейчас в программе через FIBScript попробую. интересно, зачем надо лезть через из приложения первый сервер ко второму, когда можно напрямую сделать коннект ко второй БД? а как? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:28 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, Коннект в одну БД, выгрузить данные на клиента в память. Потом коннект в другую, загрузить данные туда. Либо коннект туда и туда сразу. Грубо говоря, экспорт/импорт через клиента. Но Дельфи не знаю. Но не вижу проблем. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:39 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
KreatorXXI, Я так сейчас и делаю. Но думал можно ускориться 130тыс. записей сейчас импортируются с конектом в другую БД - 2минуты ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:42 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, ну 2 минуты это не много для того что происходит раз в месяц ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 14:44 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
KreatorXXIКоннект в одну БД, выгрузить данные на клиента в память. Потом коннект в другую, загрузить данные туда вот еще советчик... http://www.ibase.ru/impexp/ берем небуферизирующий датасет, коннект к одной БД, коннект к другой БД. И по очереди читаем 1 запись, вставляем, читаем, вставляем, .... akrushНо думал можно ускориться можно. использовать для insert препарированный запрос, и в цикле параметры передавать. Делать вставку всех 130к записей в одной транзакции. И небуферизирующий датасет, читающий данные. Ну вроде все. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 15:09 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
kdvможно. Но сложно. У него и так уже 1000 записей в секунду. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 15:12 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, Если в БД fio.fdb можно создавать процедуры, то рекомендую следующее: 1. Создаем в FIO.fdb такую процедуру: strtoid Код: sql 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. 37. 38. 39. 40.
2. В процедуре, после импорта всех данных, Получаем список всех app_num в блоб (select list(distinct app_num) from ...) и выполняем Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 15:12 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrushKreatorXXI, Я так сейчас и делаю. Но думал можно ускориться 130тыс. записей сейчас импортируются с конектом в другую БД - 2минуты На мой взгляд многовато, мягко говоря. Я бы для начала выяснил, где тормоз - на чтении или на записи. Если на записи, то уже бы посмотрел повнимательней - блобы, индексы, может триггеры... Есть подозрение, что в лоб что по лбу, через клиента или через внешнюю БД. по скорости имею ввиду. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 15:41 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
KreatorXXI, 1000+ записей в секунду - недостаточно быстро? *Ну у вас и запросы! - сказала база и повесилась. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 16:21 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
WildSery, Запись записи рознь, конечно. Но скорость должна быть на порядок выше. 10000+ в секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 16:39 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
KreatorXXI, это смотря откуда эти записи читаются. Если через сеть, да ещё и ширина записи большая, то ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 16:42 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Симонов Денис, Я как-то тестировал. Чиcтый insert из памяти в локальную базу 75000 записей (не очень широкая запись и полное отсутствие индексов) идёт где-то 5сек. Сейчас проверил в Эксперте, редакторе скриптов. Реальная таблица, запись тоже неширокая, но индексы присутствуют. 15000 за 8сек. Но это не совсем показатель, наверно, Эксперт время тратит на экранную поддержку, может ещё на что. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 17:21 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
KreatorXXI, тут ситуация другая. идет не просто импорт, а по каждой импортируемой записи, по app_num, открывается селект из другой БД. Думаю что Симонов Д. прав и скорость 1000 записей в секунду - это нормально. А то что мне сейчас надо импортировать 3500 файлов общим объемом 1,6Гб (записей будет где-то 3-4млн) - это разово и даже пару часиков можно подождать. Всем спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 17:32 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, Удалось чуть-чуть ускорить. При импорте проверяю если app_num следующей записи одинаковый - селект не закрываю и тем самым чуть-чуть экономлю время. на 130тыс. записей выиграл еще 13 секунд. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 17:34 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Симонов ДенисGallemar, а зачем тебе для SELECT запроса автономная транзакция? Уже не помню. Это скрипт из мониторинга, по запросу это контролировалась работа ibreplicator. p.s. для тс мой пример наверно не очень удачный. Как минимум надо убрать лишнюю транзакцию. Если это раз в месяц,то лучше что-нибудь лучше придумать. Например ,ibscript выгрузить в файл и загрузить в базу. А так ты на каждую строку коннект к базе делаешь + подготовка запроса и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 17:58 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, Обрати внимание на мой пример. Можно сделать одним запросом к БД ... |
|||
:
Нравится:
Не нравится:
|
|||
15.02.2018, 19:25 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Хочу продолжить тему, но с конкретным примером: Чтобы не плодить темы, спрошу тут: Имеем 2 файла БД: Import.fdb, Export.fdb имеем таблицу в Import.fdb: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
В Export.fdb эта таблица точно такая же, но имя без "EX_":UDIC_ADDRESS Подскажите какой запрос нужно выполнить во время подключения к Export.fdb чтобы перетянуть все данные из одной БД в другую. Что-то типа: Код: sql 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 10:59 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, читай про EXECUTE STATEMENT ON EXTERNAL ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 11:04 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
10.05.2018 10:59, akrush пишет: > Подскажите какой запрос нужно выполнить вгде, б#я?! Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 11:07 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Мимопроходящий > Подскажите какой запрос нужно выполнить вгде, б#я?! Очевидно "в там"... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 11:36 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Мимопроходящий, например в IBExpert - редактор скриптов ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 11:37 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
akrush, Код: sql 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.
что-то типа такого ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 11:50 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
10.05.2018 11:37, akrush пишет: > например в IBExpert - редактор скриптов http://www.ibexpert.net/ibe/index.php?n=Doc.SQLEditor?from=Doc.56#MovingData зы: вбейте это уже в FAQ, что ли... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 12:09 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Мимопроходящий Но это ж IBExpert, дай ему здоровья, постарался? Или так можно делать в самом Firebird? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:02 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
10.05.2018 15:02, bsa1959 пишет: > Но это ж IBExpert, дай ему здоровья, постарался? > Или так можно делать в самом Firebird? вот поэтому, пациента прежде чем резать нужно допросить: что, где и когда он хочет получить. средствами FB можно с 2.5 Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:11 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
SQL-ем? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:13 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
10.05.2018 15:13, bsa1959 пишет: > SQL-ем? [FOR] EXECUTE STATEMENT <query_text> [(<input_parameters>)] [ON EXTERNAL [DATA SOURCE] Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:16 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
bsa1959, ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:18 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
В IBExpert -е достаточно написать "SQL", а в Firebird - это процедура(2.5). Разница есть? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:21 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
10.05.2018 15:21, bsa1959 пишет: > а в Firebird - это процедура(2.5) нет Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:22 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
На нет - и суда нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:23 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
bsa1959SQL-ем? Одиночным SQL-запросом, если ты об этом, все равно не получится, только скриптом типа как тебе выше расписали. Ибо по настоящему гетерогенных запросов FB пока не позволяет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:24 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
IBExpert сделал то что нужно многим... Аналог Oracle Create table <name> as select .... WITH data И у него все работает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:27 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
WITH Data - опция. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:29 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Ибо по настоящему гетерогенных запросов FB пока не позволяет. Лет надцать поработал с Oracle по поводу их распределенных транзакций. Устал. Одно правят - другое падает. Под гетерогенными запросами FB, Вы это понимали? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:41 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
bsa1959, Под гетерогенными я понимаю возможность смешивать в одном запросе таблицы разных БД. Аналог института Local SQL в бормандовской BDE, если кто помнит. Причем там можно было смешивать в одном запросе таблицы не только из разных БД, но и даже разных СУБД. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:53 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
борманы прокакали весь пластелин. подались на посулы M$ о "стратегическом партнёрстве" и угробили свой BDE. зц: а желторотики и по сей день визжат что "BDE устарело!"... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 15:57 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
bsa1959, Наверно, возможность делать запросы, использующие совместно таблицы разных баз. При этом сам сервер один, запущен на одном компе. Sybase ASE так может. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.05.2018, 16:35 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
Vlad Fbsa1959, Под гетерогенными я понимаю возможность смешивать в одном запросе таблицы разных БД. Аналог института Local SQL в бормандовской BDE, если кто помнит. Причем там можно было смешивать в одном запросе таблицы не только из разных БД, но и даже разных СУБД. Юзал я эту каку. SQL там был очень приблизительный. То что запрос сейчас работает не гарантирует что при минимальных его изменениях он продолжит работать. У меня было несколько DBF таблиц по которым я делал запросы. Запросы менялись немного раз в год. И каждый раз упирался в какое-то ограничение, приходилось постоянно петлять вокруг них. В какой-то момент забил на это дело, гружу эти DBF тупо в Firebird и пишу любые запросы какие мне надо. Результат сохраняю опять же в DBF. Через IBEScript. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 03:53 |
|
Получить данные из другой БД в запросе
|
|||
---|---|---|---|
#18+
11.05.2018 3:53, fraks пишет: > В какой-то момент забил на это дело, гружу эти DBF тупо в Firebird ну так, а шо ж ты хочешь от "святых" мощей почившего в бозе продукта... последняя версия 5.2.0.2 вышла 10.05.2001 тогда ещё даже FB не было. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2018, 11:59 |
|
|
start [/forum/topic.php?all=1&fid=40&tid=1561114]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 202ms |
0 / 0 |