[SQL] PostgreSQL을 함께 데이터베이스 간 쿼리를 수행 할 수?
SQLPostgreSQL을 함께 데이터베이스 간 쿼리를 수행 할 수?
나는 PostgreSQL을을 사용하여 데이터베이스 간 쿼리를 수행 어쨌든 거기 대답은 "NO"오류 아래 메시지 (이 구글 결과)에 근거없는 추측하려고하지만거야?
databaseA=# select * from databaseB.public.someTableName;
ERROR: cross-database references are not implemented:
"databaseB.public.someTableName"
나는 데이터가 정말 (다른 데이터베이스의 사용자 테이블에서 온 하나의 데이터베이스에서 사용자 ID 열) 두 공유하고 있지만 두 데이터베이스에 걸쳐 분할되어 일부 데이터와 함께 일하고 있어요. 나는이 대신 스키마의 두 개의 별도의 데이터베이스가 왜 아무 생각이 없지만, 셀라 VIE ...
해결법
-
==============================
1.참고 : 당신은 아마 대신 두 개의 스키마를 만들고 싶어 같은 시스템에 두 개의 데이터베이스를 설정하는 경우 원래 아스 커는 묵시적으로 - 당신이 그들에 걸쳐 쿼리에 아무것도 특별한 필요하지 않는 경우.
참고 : 당신은 아마 대신 두 개의 스키마를 만들고 싶어 같은 시스템에 두 개의 데이터베이스를 설정하는 경우 원래 아스 커는 묵시적으로 - 당신이 그들에 걸쳐 쿼리에 아무것도 특별한 필요하지 않는 경우.
사용 postgres_fdw (해외 데이터 래퍼) 어떤 포스트 그레스 데이터베이스의 테이블에 연결 - 로컬 또는 원격.
다른 인기있는 데이터 소스에 대한 외부 데이터 래퍼가 주 있음. 이때 만 postgres_fdw 및 file_fdw 공식 포스트 그레스 분포의 일부입니다.
이 오래된 버전은 더 이상 지원되지 않습니다,하지만 당신은 사전에 2013 년 포스트 그레스 설치에서이 작업을 수행해야하는 경우, DBLINK라는 함수가있다.
나는 그것을 사용한 적이 있지만, 유지과 PostgreSQL의 나머지와 함께 배포된다. 당신이 당신의 리눅스 배포판과 함께 제공의 PostgreSQL의 버전을 사용하는 경우, 당신은 PostgreSQL을-있는 contrib라는 패키지를 설치해야 할 수도 있습니다.
-
==============================
2.당신 같은 크로스 데이터베이스 쿼리에 대한 같은 결론에 오기 전에 나는이로 실행했다. 나는 방법 나는 그룹화 된 테이블을 유지할 수있는 테이블 공간을 분할하지만 여전히 그들 모두를 조회 할 스키마를 사용하던 일을 결국 무엇.
당신 같은 크로스 데이터베이스 쿼리에 대한 같은 결론에 오기 전에 나는이로 실행했다. 나는 방법 나는 그룹화 된 테이블을 유지할 수있는 테이블 공간을 분할하지만 여전히 그들 모두를 조회 할 스키마를 사용하던 일을 결국 무엇.
-
==============================
3.좋은 예 중 하나
좋은 예 중 하나
SELECT * FROM table1 tb1 LEFT JOIN ( SELECT * FROM dblink('dbname=db2','SELECT id, code FROM table2') AS tb2(id int, code text); ) AS tb2 ON tb2.column = tb1.column;
참고 : 나는 미래의 참조를 위해이 정보를 제공하고 있습니다. 참고
-
==============================
4.그냥 좀 더 정보를 추가 할 수 있습니다.
그냥 좀 더 정보를 추가 할 수 있습니다.
PostgreSQL의 자주 묻는 질문
-
==============================
5.예, 당신은 DBLINK (PostgreSQL을 만 해당) 및 DBI-링크를 사용하여 (외국 간 데이터베이스 queriers을 허용) 할 수 있으며 쿼리를 수 TDS_LInk는 MS SQL 서버에 대해 실행할 수 있습니다.
예, 당신은 DBLINK (PostgreSQL을 만 해당) 및 DBI-링크를 사용하여 (외국 간 데이터베이스 queriers을 허용) 할 수 있으며 쿼리를 수 TDS_LInk는 MS SQL 서버에 대해 실행할 수 있습니다.
나는 큰 성공을하기 전에 DB-링크와 TDS-링크를 사용했다.
-
==============================
6.성능이 중요하며, 대부분의 질의가있는 경우 읽기 전용, 나는 다른 데이터베이스에 걸쳐 복제 데이터에 건의 할 것입니다. 이 데이터의 불필요한 중복처럼 보이지만 인덱스가 필요한 경우, 그것은 도움이 될 수 있습니다.
성능이 중요하며, 대부분의 질의가있는 경우 읽기 전용, 나는 다른 데이터베이스에 걸쳐 복제 데이터에 건의 할 것입니다. 이 데이터의 불필요한 중복처럼 보이지만 인덱스가 필요한 경우, 그것은 도움이 될 수 있습니다.
이 차례로 호출에서 다른 복사본을 업데이트 DBLINK 삽입 트리거에 간단하게 수행 할 수 있습니다. 완전한 복제 (Slony 같은) 옵션하지만의 주제에서 벗어난도 있습니다.
-
==============================
7.경우 누군가가 데이터베이스 간 쿼리를 수행하는 방법에 대한 더 복잡 예를 필요에서, 여기에 예입니다 그것이이있는 모든 데이터베이스에 databasechangeloglock 테이블 정리 :
경우 누군가가 데이터베이스 간 쿼리를 수행하는 방법에 대한 더 복잡 예를 필요에서, 여기에 예입니다 그것이이있는 모든 데이터베이스에 databasechangeloglock 테이블 정리 :
CREATE EXTENSION IF NOT EXISTS dblink; DO $$ DECLARE database_name TEXT; DECLARE conn_template TEXT; DECLARE conn_string TEXT; DECLARE table_exists Boolean; BEGIN conn_template = 'user=myuser password=mypass dbname='; FOR database_name IN SELECT datname FROM pg_database WHERE datistemplate = false LOOP conn_string = conn_template || database_name; table_exists = (select table_exists_ from dblink(conn_string, '(select Count(*) > 0 from information_schema.tables where table_name = ''databasechangeloglock'')') as (table_exists_ Boolean)); IF table_exists THEN perform dblink_exec(conn_string, 'delete from databasechangeloglock'); END IF; END LOOP; END $$
-
==============================
8.나는 확인하고 DBLINK 및 postgres_fdw하지만 결과를 모두 사용하여 2 개의 다른 데이터베이스의 두 테이블 사이에 외래 키 관계를 만들기 위해 노력했다.
나는 확인하고 DBLINK 및 postgres_fdw하지만 결과를 모두 사용하여 2 개의 다른 데이터베이스의 두 테이블 사이에 외래 키 관계를 만들기 위해 노력했다.
여기와 여기에 예를 들어,이에 대한 다른 사람들의 의견을 읽고 보이는 다른 소스에서 현재 해당 작업을 수행 할 수있는 방법이없는 것처럼 데 :
DBLINK 실제로 표준 포스트 그레스 불가능 다른 데이터베이스에 및 쿼리 테이블을 연결하는 일을 가능하게하지만, 서로 다른 데이터베이스의 테이블 사이의 외래 키 관계를 구축하는 것을 허용하지 않습니다 postgres_fdw.
from https://stackoverflow.com/questions/46324/possible-to-perform-cross-database-queries-with-postgresql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클에서 문자열 연결 연산자는 무엇입니까? (0) | 2020.03.22 |
---|---|
[SQL] 어떻게 열 (T-SQL)에서 여러 값을 반환? (0) | 2020.03.22 |
[SQL] PostgreSQL의에서 중복 레코드 삭제 (0) | 2020.03.22 |
[SQL] 안드로이드 SQLite는 것은 특정 행을 업데이트하는 방법 (0) | 2020.03.22 |
[SQL] SQL 서버에서 삭제 중복 레코드? (0) | 2020.03.22 |