powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / робота с таблицами из разних бд
25 сообщений из 31, страница 1 из 2
робота с таблицами из разних бд
    #38795133
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, мне нужно сравнить таблицы из разных БД, соответствуют ли она друг другу на количество адресов, домов и улиц. По названиям схемы и таблицы идентичны. какой запрос можно использовать в этом случае в POSTGRESQL?
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38795145
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христина,
Используйте dblink
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38795586
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ARTURV, Я пробовала сделать так CREATE TABLE my_tbl AS SELECT * FROM dblink('dbname=mybd', 'SELECT * FROM my2_tbl') и мне показывает ошыбку ERROR: a column definition list is required for functions returning "record"
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38795596
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христина,

Как то так
select dblink_connect ('dbname=DB21300Full host=localhost user=postgres password=postgres');
select * from dblink ('select * from имя таблицы where условие') ]as имя таблицы(имя поля тип поля,.......);
Читайте документацию
Прекрасно работает, например, копирую данные из одной БД в другую
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38795599
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ARTURV,Большое спасибо, сейчас буду пробовать. Я просто новичок в этом, еще ни разу не работала с таблицами из разных БД
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38795638
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христина,
Исправление
select * from dblink ('select список полей from имя таблицы where условие') ]as имя таблицы(имя поля тип поля,.......);
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38795645
RTFM FM FM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38799451
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Незнаю как задать условие, чтобы сделать выборку улиц которые есть в одной таблице а в другой нет. Названия полей, таблиц и схем в БД идентичны. И можно ли использовать команду NOT IN?
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38799472
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уже разобралась.
select dblink_connect ('dbname=mydb host=111.11.11.1 user=me password=111111');
SELECT * FROM dblink('dbname=mydb', 'select cod_street, name_street from street_tbl')
AS t1(cod_street_1 INTEGER, name_street_1 VARCHAR) WHERE cod_street_1 not in (select cod_street from street_tbl);
Но очень долго думает и выдает такую ошибку
ERROR: could not establish connection
DETAIL: could not connect to server: Connection timed out
Is the server running on host "111.11.11.1" and accepting
TCP/IP connections on port 1111?
В чем может быть причина ??
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38799473
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Интересует правильно ли я создала запрос???
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38799494
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХристинаУже разобралась.
Код: sql
1.
2.
3.
4.
select dblink_connect ('dbname=mydb host=111.11.11.1 user=me password=111111');

SELECT * FROM dblink('dbname=mydb', 'select cod_street, name_street from street_tbl')
  AS t1(cod_street_1 INTEGER, name_street_1 VARCHAR) WHERE cod_street_1 not in (select cod_street from street_tbl);


Но очень долго думает и выдает такую ошибку
ERROR: could not establish connection
DETAIL: could not connect to server: Connection timed out
Is the server running on host "111.11.11.1" and accepting
TCP/IP connections on port 1111?
В чем может быть причина ??
во первых если вы создали [неименованное] соедиение dblink_connect()-ом, то имя бд повторно в dblink() отсылать не нужно.


но ошибка у вас еше до этого.
похоже 111.11.11.1 вас (т.е. сервер на котором вы выполняете попытку соединения) не слушает. проверьте [с вашего сервера] или psql-ем ткнитесь к 111.11.11.1, или телнетом по 5432 .
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38799499
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ХристинаУже разобралась.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
-- тут вы пытаетесь соедениться с 111.11.11.1
select dblink_connect ('dbname=mydb host=111.11.11.1 user=me password=111111');
-- и поскольку 111.11.11.1 вас не слушает по 5432 -- получаете ошибку


-- а тут вы пытаетесь использовать [другое] соединение -- уже к локальной БД того же сервера 
-- , на котором запущен и ваш инстанс в котором вы выполняете запрос
-- возможно он бы и отработал (если у вас есть БД mydb и вы суперпользователь)
--, но ошибка у вас выше

SELECT * FROM dblink('dbname=mydb', 'select cod_street, name_street from street_tbl')
  AS t1(cod_street_1 INTEGER, name_street_1 VARCHAR) WHERE cod_street_1 not in (select cod_street from street_tbl);
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38799511
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лопата, Спасибо за подсказку. Ошибку с повторением исправила. Телнет на компьютере не работает. Какой запрос для проверки в postgresql надо использовать ???
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38799729
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христиналопата, Спасибо за подсказку. Ошибку с повторением исправила. Телнет на компьютере не работает. Какой запрос для проверки в postgresql надо использовать ???

1. нужно убедиться, что 111.11.11.1 слушает вас (тот сервер, на котором вы выполняете запросы) по 5432.

это вообще не про dblink и не про запроосы.
Даже к PosgreSQL может не иметь отношения (только в части postresql.conf [listen_addresses =] + pg_hba.conf)
а например может оказаться вопросом про iptable и прочие фаерволы

вопрос: 111.11.11.1 -- это другая какая-то машина, или вы сами к себе по сетевому интерфейсу ломитесь ?
(если второе -- то уберите из строки подключения host=111.11.11.1 -- станете ходить иначе (через т.н. local pipe, если конечно сервер -- не винда))

далее -- напрягите сетевого администратора, чтобы та машина, к которой вы хотите обратиться, слушала ту машину, с которой dblink обращается (это не та машина [клиент], где вы пишете запрос, а та машина, где запрос, вызывающий dblink, исполняете) по тому сетевому интерфейсу, по которому обращаететсь (host=....). Вот пусть он с телнетом и прочими бубнами походит вокруг.
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38800134
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лопата, Я подключаюсь из дома к удаленному рабочему столу компании А, конектиться стараюсь с БД компании Б в другую БД компании Б. Мне нужно обратиться к администратору компании Б?
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38800228
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христина,
вам нужно чтобы сервер компании Б[с БД компании Б], видел "другую БД компании Б" (а "другая БД компании Б" слушала (т.е. разрешала соединрение) с 1-м сервером компании Б.

Если сервер один и тот же, но на нем или 2 базы в одном инстансе, или 2 интсанса по разным портам - то вам надо изменить строку подключения (убрать из неё хост и, возможно, добавить порт).

Если же там ,на втором сервере, 2 сетевых интерфейса, то возможно вам надо просто обратиться к нему (с первого сервера) по другому ip.

а уж к кому вы обратитесь -- ваше дело.
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38808247
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Скажите пожалуйста как с помощью dblink делать INSERT из одной таблицы БД1 в другую с БД2 ???
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38808319
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христина,

удобнее -- со стороны вставки

Код: sql
1.
2.
3.
4.
5.
6.
7.
INSERT INTO tabdb2 ({list})
SELECT * FROM dblink('condb1name'
$x$SELECT {list} FROM tabdb1
WHERE {db1 where}
$x$) 
AS t ({list typed})
WHERE {db2 WHERE}



хотя можно и наоборот, но там каждую строку данных придется в тексты обращать.
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38814083
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лопата, Спасибо!! Сделала запрос по вашим указаниям, но мне выбивает ошибку ERROR: type "serial" does not exist
LINE 73: id_n FROM a_tbl ') AS T (id_a1 SERIAL, nick_a ...
Но там есть поле с типом serial, в чем может быть причина ??? И не нужно делать в этом запросе dblink_connect ??
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38814088
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христиналопата, Спасибо!! Сделала запрос по вашим указаниям, но мне выбивает ошибку ERROR: type "serial" does not exist
LINE 73: id_n FROM a_tbl ') AS T (id_a1 SERIAL, nick_a ...
Но там есть поле с типом serial, в чем может быть причина ??? И не нужно делать в этом запросе dblink_connect ??

нет такого типа serial в postgresql
serial это синтаксическая обертка на integer+create sequence+default nextval(...)

PS: вы пытаетесь использовать базу не зная основ и даже не прочитав (не такую уж длинную) документацию.

--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38814098
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
присоединяюсь к
Maxim Boguk<>
serial это синтаксическая обертка на integer+create sequence+default nextval(...)
<>
+ OWNED BY [for drop cascade when column dropped]

не только ртфм
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38814212
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, SELECT работает. Но когда выполняю команду INSERT то выбивает ошибку ERROR: INSERT has more target columns than expressions. Хотя количество полей совпадает, проверяла несколько раз. Может быть проблема в чем-то другом ???
PS Простите, если вам мои вопросы кажутся глупыми, документацию обязательно почитаю еще раз. Я пока только учусь и прошу помощи.
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38814213
Лопата
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Христина,

приведите код
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38814232
Христина
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
лопата,

INSERT INTO a_tbl (id_a,....id_keep_filter)
select dblink_connect ('dbname=db1 host=111.11.11.1 user=user password=111');
SELECT * FROM dblink('SELECT
id_a,.....1,null,null FROM a_tbl')
AS T(id_a,nick_a1 VARCHAR,num_a1 VARCHAR .....id_keep__filter INTEGER)
WHERE num_a1 like '20146';
...
Рейтинг: 0 / 0
робота с таблицами из разних бд
    #38814236
/\/\/\/\/\/\
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ХристинаМожет быть проблема в чем-то другом ???

Проблема классическая. Находится по другую сторону монитора.

Вы написали какую-то хрень вместо реального текста запроса. Это действительно проблема: делать то, что Вас не просят.

А мелкие глупые вопросы не читавших документацию - здесь к ним привыкли, отвечают вполне спокойно.
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / робота с таблицами из разних бд
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]