토토 결과 — 원격 데이터베이스에 대한 영구 연결을 엽니다.
토토 결과(text connstr)는 텍스트를 반환합니다. 토토 결과(text connname, text connstr)는 텍스트를 반환합니다.
토토 결과()리모컨에 연결을 설정합니다.PostgreSQL데이터베이스. 접속할 서버와 데이터베이스는 표준을 통해 식별됩니다.libpq연결 문자열. 선택적으로 연결에 이름을 할당할 수 있습니다. 여러 개의 명명된 연결을 한 번에 열 수 있지만 명명되지 않은 연결은 한 번에 하나만 허용됩니다. 연결은 닫힐 때까지 또는 데이터베이스 세션이 종료될 때까지 지속됩니다.
연결 문자열은 기존 외부 서버의 이름일 수도 있습니다. 외부 데이터 래퍼를 사용하는 것이 좋습니다.dblink_fdw외부 서버를 정의할 때. 아래 예도 참조하세요.서버 생성그리고사용자 매핑 생성.
콘네임이 연결에 사용할 이름. 생략하면 이름 없는 연결이 열리고 이름 없는 기존 연결이 대체됩니다.
connstrlibpq-스타일 연결 정보 문자열(예:)hostaddr=127.0.0.1 포트=5432 dbname=mydb 사용자=postgres 비밀번호=mypasswd 옵션=-csearch_path=. 자세한 내용은 참조섹션 32.1.1. 또는 외부 서버의 이름입니다.
항상 상태를 반환합니다.확인(오류가 발생하면 함수가 반환하는 대신 오류를 발생시키므로).
신뢰할 수 없는 사용자가 다음을 채택하지 않은 데이터베이스에 접근할 수 있는 경우보안 스키마 사용 패턴, 공개적으로 쓰기 가능한 스키마를 제거하여 각 세션을 시작합니다.검색_경로. 예를 들어 다음을 추가할 수 있습니다.options=-csearch_path=에connstr. 이 고려 사항은 다음에만 국한되지 않습니다.dlink; 임의의 SQL 명령을 실행하기 위한 모든 인터페이스에 적용됩니다.
외부 데이터 래퍼dblink_fdw추가 부울 옵션이 있습니다use_scram_passthrough여부를 제어하는dlinkSCRAM 통과 인증을 사용하여 원격 데이터베이스에 연결합니다. SCRAM 통과 인증을 사용하면,dlink일반 텍스트 사용자 비밀번호 대신 SCRAM 해시 비밀을 사용하여 원격 서버에 연결합니다. 이렇게 하면 PostgreSQL 시스템 카탈로그에 일반 텍스트 사용자 비밀번호가 저장되지 않습니다. 해당 문서를 참조하세요.use_scram_passthrough자세한 내용과 제한 사항은 postgres_fdw 옵션을 참조하세요.
수퍼유저만 사용할 수 있습니다.토토 결과비밀번호 인증, SCRAM 통과 또는 GSSAPI 인증을 사용하지 않는 연결을 생성합니다. 수퍼유저가 아닌 사람에게 이 기능이 필요한 경우 다음을 사용하세요.토토 결과_u대신.
등호가 포함된 연결 이름을 선택하는 것은 현명하지 않습니다. 이는 다른 연결 정보 문자열과 혼동될 위험이 있기 때문입니다.dlink함수.
SELECT 토토 결과('dbname=postgres 옵션=-csearch_path=');
토토 결과
----------------
알았어
(1줄)
SELECT 토토 결과('myconn', 'dbname=postgres 옵션=-csearch_path=');
토토 결과
----------------
알았어
(1줄)
-- 외부 데이터 래퍼 기능
-- 참고: SCRAM 통과를 사용하지 않는 로컬 연결에는 비밀번호가 필요합니다.
-- 제대로 작동하려면 인증해야 합니다. 그렇지 않으면, 당신은 받게 될 것입니다
-- 토토 결과()에서 다음 오류가 발생했습니다.
-- 오류: 비밀번호가 필요합니다.
-- 세부사항: 서버가 비밀번호를 요청하지 않으면 수퍼유저가 아닌 사용자는 연결할 수 없습니다.
-- 힌트: 대상 서버의 인증 방법을 변경해야 합니다.
서버 fdtest 외부 데이터 래퍼 생성 dblink_fdw 옵션(hostaddr '127.0.0.1', dbname 'contrib_regression');
비밀번호 '비밀'을 사용하여 사용자 regress_dblink_user 생성;
regress_dblink_user 서버 fdtest 옵션에 대한 사용자 매핑 생성(사용자 'regress_dblink_user', 비밀번호 'secret');
regress_dblink_user에 외부 서버 fdtest에 대한 사용 권한을 부여합니다.
regress_dblink_user에 대한 테이블 foo에 대한 선택 부여;
\set ORIGINAL_USER : 사용자
\c - regress_dblink_user
SELECT 토토 결과('myconn', 'fdtest');
토토 결과
----------------
알았어
(1줄)
SELECT * FROM dblink('myconn', 'SELECT * FROM foo') AS t(a int, b 텍스트, c 텍스트[]);
| 비 | ㄷ
----+---+---------------
0 | | a0,b0,c0
1 | 비 | a1,b1,c1
2 | c | a2,b2,c2
3 | 디 | a3,b3,c3
4 | 전자 | a4,b4,c4
5 | 에프 | a5,b5,c5
6 | 지 | a6,b6,c6
7 | 시간 | a7,b7,c7
8 | 나 | a8,b8,c8
9 | j | a9,b9,c9
10 | 케이 | a10,b10,c10