|
|
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Здравствуйте друзья. Необходимо сделать следующий функционал. Саму проблему немного тут описал. В общем решил длать копирование данных из строго определенных колонок в аналогичные колонки другой таблицы. Предполагается, что таблицы в которые будут копировать данные (а копироваться они туда будут посредством тригеров на обновление) находятся в другой бд, но на том же сервере. Прошу помочь с базовым синтаксисом тригеров. Первая таблицы из DB_1 (откуда будет копироваться информация) Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. В DB_2 создам аналогичную таблицу но без некоторых полей. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Мне нужно будет писать один тригер на обновление всех выбранных полей. Или для каждой колонки свой тригер?? Ну и собственно сам синтаксис, как указывать путь до таблицы из другой БД. Друзья буду благодарен любой помощи и наставлениям. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.04.2014, 17:49:24 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Так как у меня синхронизация будет одностороняя, то достаточно будет просто сделать тригеры на обновление. На представлениях тоже получилось но втаком случае, у меня нет возмможности давать отдльные права на колонки. В общем буду рад помощи в написанием синтаксиса тригера. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Еще ребята, посоветуйте, как лучше сделать. Синхронизацию таблиц в другую БД. или же в той же БД но в другую схему. Размер БД в данное время 250 Mb, максимальный размер который может достичь БД 2 - 3 Gb не больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 14:47:23 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
тело триггера Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. При записи объекта выдается ошибка. Код: plaintext 1. 2. 3. 4. 5. 6. Кроме того, непонятно как будет происходить присваивание. В примере указанном мною по всей видимости новые значения будут зполняться из другой БД. В мне нужно чтоб новые значения наоборот туда ПИСАЛИСЬ. Я слаб в SQL, i need help( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 16:43:39 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман Алимурадов, в postgresql нет такого синтаксиса. Если нужно подключиться к другой базе используйте dblink или FDW Вот нафига в вашем случае другая база? Разберитесь вначале с правами ( GRANT / REVOKE / SECURITY DEFINER ...). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 16:54:58 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
V&N Нариман Алимурадов, в postgresql нет такого синтаксиса. Если нужно подключиться к другой базе используйте dblink или FDW Вот нафига в вашем случае другая база? Разберитесь вначале с правами ( GRANT / REVOKE / SECURITY DEFINER ...). Говоря про права Вы имеете ввиду, давать права на отдельные колонки??? В моем случае, речь идет о пространственных данных, и как бы правильнее будет иметь разделеннные БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 17:11:15 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман Алимурадов... давать права на отдельные колонки???... нет, права на таблицу. Две таблички, одна - "общедоступная" с публичной информацией, вторая "с ограниченным доступом"- с дополнительной информацией. Связь - один к одному. типа: Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 17:32:09 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Но причем тут права, если я хочу уже из имеющейся исходной таблицы, сформировать вторую таблицу, без некоторых полей, и более того еще скрывать записи которые имеют определенные значения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 17:37:45 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман Алимурадо Это не MS SQL Вам же сказали dblink ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 17:50:40 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
ARTURVНариман Алимурадо Это не MS SQL Вам же сказали dblink Даже в пределах одного сервера для заглядывания в другуб БД необходим dblink? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 17:52:26 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Но причем тут права... разграничение доступа будет на уровне приложения или субд? ...хочу уже из имеющейся исходной таблицы, сформировать вторую таблицу, без некоторых полей... зачем дублировать одни и те-же данные? ...сформировать вторую таблицу, без некоторых полей... у вас будет несколько приложений, которые работают с разными наборами полей или туча if login_name = ... query = "select ..."? и более того еще скрывать записи которые имеют определенные значения.Скрывать можно через view или function, возвращающие набор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2014, 18:00:31 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман АлимурадовARTURVНариман Алимурадо Это не MS SQL Вам же сказали dblink Даже в пределах одного сервера для заглядывания в другуб БД необходим dblink? да... на уровне sql базы полностью изолированы... нужен доступ совместный - используйте схемы для этой цели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 04:33:39 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман АлимурадовARTURVНариман Алимурадо Это не MS SQL Вам же сказали dblink Даже в пределах одного сервера для заглядывания в другуб БД необходим dblink? Да ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 08:09:24 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
V&NНо причем тут права... разграничение доступа будет на уровне приложения или субд? ...хочу уже из имеющейся исходной таблицы, сформировать вторую таблицу, без некоторых полей... зачем дублировать одни и те-же данные? ...сформировать вторую таблицу, без некоторых полей... у вас будет несколько приложений, которые работают с разными наборами полей или туча if login_name = ... query = "select ..."? и более того еще скрывать записи которые имеют определенные значения.Скрывать можно через view или function, возвращающие набор. 1) Разграничение прав будет на уровне СУБД. 2) Того требуют ГОСТЫ и порядок работы 3) У меня будут множество клиентов, которым показ некоторых данных запрещен из за секретности 4) Этот вариант меня тоже заинтересовал в частности создаю представление Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Где пытаюсь поставить условие WHERE objectkey !~ 'P0041185000 которое исключало бы, попадание объектов с определенной семантиков в представление. Однако в таком случае у меня в представлении не отображаются вновь создаваемые объекты. Если условие убрать то все нормально отображается, но меня так не устраивает, так как еще раз повторюсь есть записи которые необходимо скрывать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 09:38:22 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман АлимурадовОднако в таком случае у меня в представлении не отображаются вновь создаваемые объекты.добавить OR objectkey IS NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 11:26:54 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
LeXa NalBatНариман АлимурадовОднако в таком случае у меня в представлении не отображаются вновь создаваемые объекты.добавить OR objectkey IS NULL Изменения теперь переносятся и в представление. Но.. Если я создаю запись в которой objectkey='P0062150000' то она все равно отображается в представлении, что не есть хорошо(((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 11:36:58 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Упссс. простите ошибся с запросом. все норм, объекты которые исключены в условии не отображаются как и требовалось. спасибо большое.)) Буду экспериментировать и тестировать, если что отпишусь, всем спасибо огромное за помощь!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 11:40:19 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
автор1) Разграничение прав будет на уровне СУБД. автор2) Того требуют ГОСТЫ и порядок работыкакая-то надуманная фигня, да еще и с геморроем на соответствие ключей и данныхавтор3) У меня будут множество клиентов, которым показ некоторых данных запрещен из за секретности секретность не противоречит наличию данных в одной базе, и не важно в одной или нескольких схемах, потому что см пункт 1. упрощенный пример VIEWS: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 12:18:38 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман Алимурадов1) Разграничение прав будет на уровне СУБД. 2) Того требуют ГОСТЫ и порядок работы 3) У меня будут множество клиентов, которым показ некоторых данных запрещен из за секретности 4) Этот вариант меня тоже заинтересовал все ограничения которые можно сделать на уровне разных двух баз прекрасно делаются и на уровне двух разных схем в пределах одной базы... почитайте про права на схемы и таблицы перед тем как городить views и тем более перед тем как городить dblink триггера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 14:03:16 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Maxim BogukНариман Алимурадов1) Разграничение прав будет на уровне СУБД. 2) Того требуют ГОСТЫ и порядок работы 3) У меня будут множество клиентов, которым показ некоторых данных запрещен из за секретности 4) Этот вариант меня тоже заинтересовал все ограничения которые можно сделать на уровне разных двух баз прекрасно делаются и на уровне двух разных схем в пределах одной базы... почитайте про права на схемы и таблицы перед тем как городить views и тем более перед тем как городить dblink триггера хотя я посмотрел исходную задачу - тут скорее да лучше через views делать и правильнее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 14:04:29 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Maxim Boguk, Дело в том что данные у меня геопространственные. Поднимается картографический сервис. Одновременно на карте могут находится с десяток таблиц, и при изменении масштаба например к БАЗЕ посылается куч запросов на перерисовку карты. Карта исходная у меня в масштабе 1:2000, на основе ее я хочу сформировать карту масштаба 1:10 000, при этом соблюдая требования допустимой детализации карты для этого масштаба. Вариант с представлением у меня получился (спасибо ребятам за помощь), теперь бы еще опробовать вариант с триггерами и dblink чтоб проверить в каком случае будет оптимальная производительность. А вот как прописать триггеры на перенес данных в другую таблицу мне пока не совсем ясно(. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 14:35:34 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Ребята помогите пожалуйста переделать данный триггер с использованием dblink предполагается что имеются две таблицы pokritiya. Одна в БД map2000 другая в БД topo2000 имеются описанные в первом посте. Обе БД располагаются на одном серваке. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.04.2014, 16:09:57 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
ребят подскажите пожалуйста dblomk следует использовать впряо в теле триггерной функции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 15:57:02 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Нариман Алимурадовребят подскажите пожалуйста dblomk следует использовать впряо в теле триггерной функции? RTFM блин доку вам тут никто не будет пересказывать http://www.postgresql.org/docs/9.3/interactive/dblink.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 16:36:38 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
Написал тригернуюю функцию Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Ну и собственно сам триггер Код: sql 1. 2. 3. 4. 5. При добавлении записей в исходную таблицу и попытке их сохранить выдается ошибка. авторОшибки: ОШИБКА: не добавлен 1 объект. Ошибки источника: Ошибка PostGIS при добавлении объектов: ОШИБКА: в записи "new" нет поля "id_0" КОНТЕКСТ: SQL-оператор: "SELECT dblink_exec('insert into dorojnaya_set(id_0, the_geom, objectcode, objectkey, objectid ) values ('||NEW.id_0||','''||NEW.the_geom||''','''||NEW.objectcode||''','''||NEW.objectkey||''','''||NEW.objectcid||''');')" функция PL/pgSQL dorojnaya_set1_update(), строка 4, оператор PERFORM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 17:08:11 |
|
||
|
Заполнение полей в таблице из другой БД.
|
|||
|---|---|---|---|
|
#18+
изменил NEW.id_0 на NEW.id теперь появилась следующая ошибка авторОшибки источника: Ошибка PostGIS при добавлении объектов: ОШИБКА: оператор не уникален: text || geometry СТРОКА 1: ...de, objectkey, objectid ) values ('||NEW.id||','''||NEW.the_... ^ ПОДСКАЗКА: Не удалось выбрать лучшую кандидатуру оператора. Возможно, вам следует добавить явные преобразования типов. ЗАПРОС: SELECT dblink_exec('insert into dorojnaya_set(id_0, the_geom, objectcode, objectkey, objectid ) values ('||NEW.id||','''||NEW.the_geom||''','''||NEW.objectcode||''','''||NEW.objectkey||''','''||NEW.objectcid||''');') КОНТЕКСТ: функция PL/pgSQL dorojnaya_set1_update(), строка 4, оператор PERFORM ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2014, 17:30:29 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=38633433&tid=1998675]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
298ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 193ms |
| total: | 600ms |

| 0 / 0 |
