Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Помогите сформировать скрипт. К примеру, такой скрипт, он изменяет все записи или добавляет: Код: sql 1. 2. 3. 4. 5. 6. 7. ... А мне надо что-то типа такого: Код: sql 1. 2. 3. 4. 5. 6. 7. Но как это правильно написать (Firebird 2.5) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 10:23 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, смотри merge ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 10:30 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Спасибо, Денис. Посмотрел merge - ничо ваще не понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 10:38 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, Читать до просветления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 10:58 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
merge она тоже делает update или insert, а мне надо по условию - либо делать, либо нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:11 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
DarkMaster, Я уже до помутнения прочитал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:12 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, вообще то в merge можно не указывать предложение update, и тогда этот оператор и будет как раз таки производить вставку либо нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:16 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyЯ уже до помутнения прочитал а что читаешь, если не секрет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:24 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Не пойму что Вы мне предлагаете мне надо по условию - по 7-ми полям - если по ним совпадение, то не делать ни update ни insert, а если нет совпадения то делать update если по 3-м полям совпадение или insert если записи с такими 3-мя полями нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:24 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
kdvlabyЯ уже до помутнения прочитал а что читаешь, если не секрет? http://www.firebirdsql.org/refdocs/langrefupd21-merge.html http://firebirdsql.su/doku.php?id=update_or_insert ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:25 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, а почему не http://www.firebirdsql.org/file/documentation/reference_manuals/Firebird-Language-Reference-Russian.pdf ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:26 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
kdv, Спасибо, но хрен редьки не слаще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:32 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Походу задача нерешаемая! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:33 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyмне надо по условию - по 7-ми полям - если по ним совпадение, то не делать ни update ни insert, а если нет совпадения то делать update если по 3-м полям совпадение или insert если записи с такими 3-мя полями нет. Ну пиши EXECUTE BLOCK и там наворачивай свою через-жопу-хитровывернутую логику сколько хочешь. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:44 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, execute block может что угодно. Но даже без него решение есть Код: 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. 41. 42. 43. 44. 45. 46. просто надо включать мозг. В трёшке это можно сделать немного проще ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:44 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyПоходу задача нерешаемая!ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:44 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, execute block может что угодно. Но даже без него решение есть просто надо включать мозг. В трёшке это можно сделать немного проще Да, я не верю в Execute block - там понятно if ... А тут опупеть!!! То есть если в USING пустое множество, то ничего происходить не будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:52 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
lady, хотя это merge сделает не совсем то что нужно. Пиши execute block. В трёшке можно вот так выкрутится Код: 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. А вообще задача странная. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:55 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyДа, я не верю в Execute block это ещё почему? Все вроде верят ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:57 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovlabyмне надо по условию - по 7-ми полям - если по ним совпадение, то не делать ни update ни insert, а если нет совпадения то делать update если по 3-м полям совпадение или insert если записи с такими 3-мя полями нет. Ну пиши EXECUTE BLOCK и там наворачивай свою через-жопу-хитровывернутую логику сколько хочешь. Через какую жопу???? Я просто хочу что если уже такая запись есть то не дергать триггера и не обновлять даты изменений блок наверное так будет: EXECUTE BLOCK AS BEGIN if not exists (select fld1 from T where fld1=1 and fld2=2 and fld3=3 and fld4=4 and fld5=5 and fld6=6 and fld7=7) then update or insert into T (fld1, fld2, fld3, fld4, fld5, fld6, fld7) values (1, 2, 3, 4, 5, 6, 7) matching (fld1, fld2, fld3); END ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:58 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyТо есть если в USING пустое множество, то ничего происходить не будет? не будет. Доку надо читать внимательнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 11:59 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyДа, я не верю в Execute block - там понятно if ... А что так? Религия? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:00 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисlabyДа, я не верю в Execute block это ещё почему? Все вроде верят Ну это как-то не совсем sql, - если да кабы, а не сразу хочу! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:02 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyЯ просто хочу что если уже такая запись есть то не дергать триггера и не обновлять даты изменений Запись идентифицируется ключом. А у тебя - какой-то хренью. И нет, нормальный блок будет не такой. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:03 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, а проктостоматологические задачи обычно через чистый SQL не решаются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:05 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlady, хотя это merge сделает не совсем то что нужно. Пиши execute block. В трёшке можно вот так выкрутится ... А вообще задача странная. не lady, а laby Такое дело - обновление КАЛДР ... в общую базу со своими правилами. На каждой таблице скрипт по изменениям, которые делают всякие гадости. Когда пару миллионов записей изменяю, начинаются всякие процессы по пересылке этих записей в тысячу других баз данных по всей стране ... Хотя большинство записей фактически не трогаются. Но и сами update or insert выполняются не так уж быстро - миллион записей около 2-х часов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:11 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, нормальные люди передают только изменения. А не всю табличку каждый раз. Тут репликация нужна. Хочешь сам пиши, хочешь купи готовый репликатор. В любом случае каждый раз перекидывать миллионы (хорошо не миллиарды) записей, причём большая часть из них не менялась это как раз и есть через жопу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:15 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovlabyЯ просто хочу что если уже такая запись есть то не дергать триггера и не обновлять даты изменений Запись идентифицируется ключом. А у тебя - какой-то хренью. И нет, нормальный блок будет не такой. Запись действительно идентифицируется ключом. Но на момент вставки или апдейта мы не знаем этого ключа, при импорте данных из другой базы данных мы и ищем нужную запись, но по нескольким полям. А какой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:15 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денис, Нормальные люди изъясняются понятным языком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:17 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, что не понятного. В мастер базе ведётся логирование изменений в триггерах. Потом по результатам этих изменений получается скрипт, который выполняется на подчинённых базах. Про репликаторы тебе Dimitry Sibiryakov больше расскажет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:22 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, каждый раз перекидывать миллионы (хорошо не миллиарды) записей, причём большая часть из них не менялась это как раз и есть через жопу. Напомню название темы "Скрипт update or insert по изменению только " ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:24 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyА какой? FOR SELECT с WHERE по трём полям, внутри проверка оставшихся четырёх и соответствующее действие. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:25 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, что не понятного. В мастер базе ведётся логирование изменений в триггерах. Потом по результатам этих изменений получается скрипт, который выполняется на подчинённых базах. Про репликаторы тебе Dimitry Sibiryakov больше расскажет. Кто в мастер-базе ведет это логгирование изменений? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:25 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, в принципе тебе наверное и первый merge который я написал подойдёт. Попробуй его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:26 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovlabyА какой? FOR SELECT с WHERE по трём полям, внутри проверка оставшихся четырёх и соответствующее действие. А чем if не угодил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:27 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyКто в мастер-базе ведет это логгирование изменений? сама мастер база конечно. С помощью триггеров повешенных на соответствующие таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:28 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисlabyКто в мастер-базе ведет это логгирование изменений? сама мастер база конечно. С помощью триггеров повешенных на соответствующие таблицы. А оно надо ФНС России ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:32 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денис С помощью триггеров повешенных на соответствующие таблицы. там вообще dbf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:36 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, а ну да. Если БД источник не твоя тогда пожалуй я не прав. Первый merge подходит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:40 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyА чем if не угодил? Твой - тем что стоит снаружи и имеет внутри exists. В результате этого твой код в 2-3 раза медленнее работает. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 12:45 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, Первый merge подходит? Пробую ... не так быстро - у меня же там не fld1, fld2 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 13:59 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyСимонов Денисlaby, Первый merge подходит? Пробую ... не так быстро - у меня же там не fld1, fld2 ... Вроде работает, буду тогда пробывать через merge ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 14:26 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labylabyпропущено... Пробую ... не так быстро - у меня же там не fld1, fld2 ... Вроде работает, буду тогда пробывать через merge Из IBExpert работает сформированный скрипт merge, а через tpFIBScript не работает, хотя update or insert работал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 16:36 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, как имено не работает. Ошибку пишет или нет нужного результата выполнения. Если ошибку то какую? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.01.2015, 17:06 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, как имено не работает. Ошибку пишет или нет нужного результата выполнения. Если ошибку то какую? Спасибо большое Денис! Ничо не пишет тупо ничего не делает. Ну я в цикле через TpFibQuery по одному выполняю, вроде выполняется ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 15:49 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Что-то мне подсказывает, что merge слишком новорочена, позволяет не только как у меня сливать с таблицей по одной записи, а может можно сформировать целую вторую таблицу, а затем слить одним оператором merge? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:15 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, может и так. Можно например в одной транзакции залить сначала GTT простым insert без всяких проверок, а потом в ней же запустить merge который будет разруливать конфликты. Сам решай как лучше сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:22 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, может и так. Можно например в одной транзакции залить сначала GTT простым insert без всяких проверок, а потом в ней же запустить merge который будет разруливать конфликты. Сам решай как лучше сделать. Дело в том что мне потом надо будет удалить все записи, которых в новой редакции нет. А чтобы их вычленить нужна наверное вторая таблица так как по dbf искать будет проблематично. А что такое GTT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:27 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyА что такое GTT ? Временная таблица. Записи из которой удаляются автоматом или по коммиту тразакции или по дисконнекту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:30 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, глобальная временная таблица http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes217.html#rnfb210-globaltemp Данные в ней существуют только на время транзакции или коннекта. Делай эту таблицу такой же структуры как твой dbf. Просто переливаешь туда данные. А потом в какой нибудь хранимой процедуре они у тебя копируются в нормальную табличку с отсечением дубликатов, обновлением полей и удалением. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:33 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, глобальная временная таблица http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes217.html#rnfb210-globaltemp Данные в ней существуют только на время транзакции или коннекта. Делай эту таблицу такой же структуры как твой dbf. Просто переливаешь туда данные. А потом в какой нибудь хранимой процедуре они у тебя копируются в нормальную табличку с отсечением дубликатов, обновлением полей и удалением. Зачем же мне dbf - Я лучше сделаю ту же структуру что у меня. Но GTT чтото сложновато, может простую сделать ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:50 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, А потом в какой нибудь хранимой процедуре они у тебя копируются в нормальную табличку с отсечением дубликатов, обновлением полей и удалением. Как раз надо отсечь не дубликаты, а наоборот старые которых в новой нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:52 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, лучше GTT. В общем-то она не сложнее обычной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:55 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, Просто переливаешь туда данные. А потом в какой нибудь хранимой процедуре они у тебя копируются в нормальную табличку с отсечением дубликатов, обновлением полей и удалением. то есть от merge отказаться??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 18:55 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, почему? Тут просто задача разбивается на два этапа. Сначала льёшь данные в GTT. А потом из этой GTT обработку делаешь и распихиваешь свои данные в обычную таблицу(ы). А уж каким способом это делать merge или не merge пофиг. Но если учитывать что ты собираешься удалять по не совпадению, то тут одним merge не обойдёшься. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 19:00 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyто есть от merge отказаться??? Ну тебе уже раньше советовали хранимую процедуру писать или execute block пользовать ;) Откуда ж мы знаем, что для тебя и твоей задачи лучше? Нам за это денег не платят ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 19:00 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
GTT лажа какая-то индексы не создаются не фига ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 19:02 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, почему? Тут просто задача разбивается на два этапа. Сначала льёшь данные в GTT. А потом из этой GTT обработку делаешь и распихиваешь свои данные в обычную таблицу(ы). А уж каким способом это делать merge или не merge пофиг. Но если учитывать что ты собираешься удалять по не совпадению, то тут одним merge не обойдёшься. Вот я потом и собираюсь в моей временной-поверенной таблице смотреть, если нет такой записи, то удалять. Но в GTT индекс мне не создало так что я не знаю, как без индексов смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 19:05 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, не гони. Индексы там прекрасно создаются. Кинь сюда скрипт создания GTT и индекса к ней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 19:17 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, не гони. Индексы там прекрасно создаются. Кинь сюда скрипт создания GTT и индекса к ней Хорошо, гоню. Виноват. Каюсь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 19:23 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyмне потом надо будет удалить все записи, которых в новой редакции нет. Такого merge даже в тройке не умеет. В Оракуле merge такое умеет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2015, 19:36 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Создание таблицы без ошибок, а при добавлении пишет типа не знает таблицу, хотя создание индексов и триггеров тоже не ругается, знает а insert не знает. В ibexpert тоже знает и insert ... Код: pascal 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. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:30 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, после create table надо commit транзакции сделать. иначе ее до этого момента нет, и вставлять данные некуда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:34 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, комита нет зы. создай один раз таблицу и используй её когда надо ззы. работа с GTT ничем не отличается от работы с обыкновенными таблицами есть только один нюанс: данные "исчезают" либо по завершению транзакции, либо по завершению коннекта ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:36 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, блин на кой чёрт тебе создвать таблицу из программы. Создай её 1 раз в IBE, да и индексы сразу. Структура КЛАДРА так часто не меняется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:36 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby Код: pascal 1. 2. 3. 4. Этак у тебя импорт данных долго проходить будет. Используй параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:39 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, блин на кой чёрт тебе создвать таблицу из программы. Создай её 1 раз в IBE, да и индексы сразу. Структура КЛАДРА так часто не меняется. Ну сами же сказали что надо ее создать в одной транзакции, и никто не заметит, что она была ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:42 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby Код: pascal 1. 2. 3. 4. Этак у тебя импорт данных долго проходить будет. Используй параметры. Какие еще параметры? Наоборот я сразу уже пишу, а так еще параметры будут присваиваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:44 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
m7mlaby, комита нет зы. создай один раз таблицу и используй её когда надо ззы. работа с GTT ничем не отличается от работы с обыкновенными таблицами есть только один нюанс: данные "исчезают" либо по завершению транзакции, либо по завершению коннекта Тогда это не временная таблица, а таблица с временными данными, типа я идиот не знаю конструкции delete from ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:50 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby> Какие еще параметры? Наоборот я сразу уже пишу, а так еще параметры будут присваиваться -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:50 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, похоже ты не понял что такое GTT. Это такая же постоянная структура с точки зрения метаданных, только сами данные в ней временные. Поэтому не надо каждый раз её создавать и грохать. Про параметры ты не прав. Разница будет в разы. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. если использовать неименованные параметры будет ещё быстрее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:55 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, похоже ты не понял что такое GTT. Это такая же постоянная структура с точки зрения метаданных, только сами данные в ней временные. Поэтому не надо каждый раз её создавать и грохать. Про параметры ты не прав. Разница будет в разы. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. если использовать неименованные параметры будет ещё быстрее За счет чего будет разница??? Разве не sql-запрос будет выполняться на сервере который я написал, будет нечто волшебное - параметры гурьбой полетят на сервер? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 11:59 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, FB все запросы выполняет в два этапа. Сначала поисходит подготовка запроса (prepare) в это время разбирается текст запроса парсером и он преобразуется в BLR, оптимизатор вычисляет план, может ещё чего то делается. Потом собствено выполнение запроса. Если у тебя запрос без параметров, то обе фазы происходят на каждую запись. В случае параметризованаого запроса, подготовка запроса выполняется всего один раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:04 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Или вы хотите сказать, что 4 миллииона qryWrite.SQL.Append долго выполняются??? Да 10 секунд! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:05 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, FB все запросы выполняет в два этапа. Сначала поисходит подготовка запроса (prepare) в это время разбирается текст запроса парсером и он преобразуется в BLR, оптимизатор вычисляет план, может ещё чего то делается. Потом собствено выполнение запроса. Если у тебя запрос без параметров, то обе фазы происходят на каждую запись. В случае параметризованаого запроса, подготовка запроса выполняется всего один раз. Ну не знаю, когда я делал update or insert через параметры циклом выполнялось в 2 раза дольше, чем сразу огромный текст подготовил и скриптом выполнил без всяких параметров ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:09 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, значит ты что то не правильно делал. Скорее всего у тебя сама подготовка запроса каждый раз в цикле была, а не вынесена за пределы цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:13 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby> Ну не знаю, когда я делал update or insert через параметры циклом выполнялось в 2 раза дольше, чем сразу огромный текст подготовил и скриптом выполнил без всяких параметров ... Блин, да поверь ты взрослым дядям!!! Плохого не посоветуют!!! -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:14 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
zirra Блин, да поверь ты взрослым дядям!!! Плохого не посоветуют!!! -- Vladimir A.Bakhvaloff Верю, но я тоже не молод уже ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:22 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby> Верю, но я тоже не молод уже ... Я не про возраст, а про ОПЫТ... .... Я сам долго упирался против этого метода... А потом послушался и сделал такой "вставлятель", что он и isql уделывал... -- Vladimir A.Bakhvaloff Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 12:29 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 16:17 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, да вроде всё пучком ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 16:24 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Почему-то merge почти все записи проапдейтил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 16:58 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyПочему-то merge почти все записи проапдейтил но не за 3 часа как раньше а за 10 минут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 16:59 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, у тебя там NULLы в полях есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2015, 17:01 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, у тебя там NULLы в полях есть? Вроде нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.01.2015, 09:59 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyСимонов Денисlaby, у тебя там NULLы в полях есть? Вроде нет. Да, было там одно поле не присвоено. Сейчас вроде мерже работает. Но нарисовалась проблема что в прошлом разу было мало записей теперь много, так что от мержи толку мало. Но я уже придумал решение - буду инсертить-мержить по частям через время. А вот по окончании старые удалить - заинсерчу снова во временную теперь все записи и удалю в замерженном те, которых нет в ГТТ. Есть желание для этого ХП сделать. Но по ГТТ я чтото читал типа в ХП чего-то там нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 10:57 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, всё там можно. ХП - самое правильное решение. Ведь операция то не одноразовая. Самое главное сделать ХП надо не селективной, т.е . SUPEND там быть не должно. Естественно GTT заполнить до вызова ХП, обычными insert'ами, а затем в той же транзакции вызвать ХП которая раскидает записи из GTT нужным образом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 11:09 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
А после update можно как-то узнать сколько записей проапдейтилось, кроме как по триггеру время проставлять в записях, а потом запрос по времени? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 14:14 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyА после update можно как-то узнать сколько записей проапдейтилось, кроме как по триггеру время проставлять в записях, а потом запрос по времени? Точнее говоря после merge сколько добавлено и обновлено, или до мерже их тупо вычислить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 14:19 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
laby, c merge тут будет облом http://www.sql.ru/forum/1090896/row-count-chto-dolzhno-v-nyom-byt-v-rezultate-merge?hl=row_count merge Придётся либо отказываться от MERGE и обновлять/добавлять записи в цикле по курсору, либо отказаться от этой информации вовсе. Можно через триггер попробовать такой счётчик сделать, но ИХМО это криво ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 14:34 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисc merge тут будет облом Не будет. isc_dsql_sql_info() возвращает раздельные счётчики по каждой операции. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 14:41 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, 1. Я сомневаюсь что ТС сможет ей воспользоваться 2. Эта информация скорее всего важна ему внутри ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 14:43 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денис1. Я сомневаюсь что ТС сможет ей воспользоваться 2. Эта информация скорее всего важна ему внутри ХП 1. Ограниченные возможности ТС-а это не наша проблема. 2. Маниакальное желание абсолютно всё делать в ХП к добру не приводит. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.01.2015, 15:13 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovСимонов Денисc merge тут будет облом Не будет. isc_dsql_sql_info() возвращает раздельные счётчики по каждой операции. Да, я всё решил без ХП: 1) Делаю GTT; 2) Добавляю записи (первые 30000 записей): Код: sql 1. 2. 3. 4. 5. 3) Подсчитываю сколько новых записей: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 4) сливаю новые с существующими Код: 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. 41. 42. 43. 44. 45. 5. Если записей мало новых ch_cnt (вычисленных в п. 3), - то берем следующие 30000-ch_cnt и так далее пока не обновим 29000+ записей 6. Через пол часа повторяем процедуру (пп. 2-5) и так далее пока не пройдем всю исходную таблицу (кладр) 6. Добавляем весь кладр в GTT 7. Удаляю все записи, которых нет в GTT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.01.2015, 17:21 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovСимонов Денисc merge тут будет облом Не будет. isc_dsql_sql_info() возвращает раздельные счётчики по каждой операции. Можно поподробнее? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 18:45 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов ДенисDimitry Sibiryakov, 1. Я сомневаюсь что ТС сможет ей воспользоваться 2. Эта информация скорее всего важна ему внутри ХП Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 18:45 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Симонов Денисlaby, c merge тут будет облом http://www.sql.ru/forum/1090896/row-count-chto-dolzhno-v-nyom-byt-v-rezultate-merge?hl=row_count merge Придётся либо отказываться от MERGE и обновлять/добавлять записи в цикле по курсору, либо отказаться от этой информации вовсе. Можно через триггер попробовать такой счётчик сделать, но ИХМО это криво Так всё-таки могу или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 18:45 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyТак всё-таки могу или нет? Ох, нам-то откуда знать хватает у тебя мозгов на использование Firebird API или нет?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2015, 18:54 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovlabyТак всё-таки могу или нет? Ох, нам-то откуда знать хватает у тебя мозгов на использование Firebird API или нет?.. А это чего такое? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 10:02 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labyDimitry Sibiryakovпропущено... Ох, нам-то откуда знать хватает у тебя мозгов на использование Firebird API или нет?.. А это чего такое? Ну где-то здесь ответ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2015, 10:38 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 10:40 |
|
||
|
Скрипт update or insert по изменению только
|
|||
|---|---|---|---|
|
#18+
labym7mпропущено... Ну где-то здесь ответ А по-русски? Не знаю, для моих задач достаточно стандартных оберток. Посмотри примеры использования API (они в папке ..\examples\api\), правда тоже не на русском ps. IB/FB API смотрел немного еще во времена IB 6, но только для общего развития использовал API очень давно (лет этак 25 назад) но то был совсем не IB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.02.2015, 11:05 |
|
||
|
|

start [/forum/topic.php?all=1&fid=40&tid=1563001]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
182ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
150ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 389ms |

| 0 / 0 |
