文档

CREATE [PUBLIC] DATABASE LINK

更新时间:

CREATE [PUBLIC] DATABASE LINK创建一个数据库连接。

语法

CREATE [ PUBLIC ] DATABASE LINK <name>
   CONNECT TO { CURRENT_USER |
               <username> IDENTIFIED BY "<password>"}
  USING { ( <fdw_connection_string ) |
        '<oracle_connection_string>' }

参数说明

参数

说明

PUBLIC

创建任何用户都可以使用的公共数据库连接。如果省略此参数,则数据库连接是私有的,只有数据库连接的所有者可以使用。

name

数据库连接的名称。

username

用于连接到远程数据库的用户名。

CURRENT_USER

使用当前用户名作为连接到远程数据库的用户名。

password

用于连接到远程数据库的密码。

fdw_connection_string

指定postgres_fdw外部数据包装器的连接信息,如果数据库上未安装postgres_fdw ,请使用CREATE EXTENSION postgres_fdw命令安装postgres_fdw。例如,'channel_name=localhost dbname=marketing'PolarDB PostgreSQL版(兼容Oracle)不允许指定host、port关键字,请使用channel_name代替。

oracle_connection_string

指定oci连接的连接信息。例如,'//orachannel/acctg' ,格式为'//<channel_name>/<dbanem>'

注意事项

  • CREATE DATABASE LINK创建数据库连接。数据库连接是一个对象,允许在DELETE、INSERT、SELECT或UPDATE命令中引用远程数据库中的表或视图。通过将附加到SQL命令中引用表或视图名称来引用数据库连接,其中dblink是数据库连接的名称。

  • 数据库连接可以是公共的或私有的。公共数据库连接是任何用户都可以使用的连接。只有数据库连接的所有者才能使用私有数据库连接。指定PUBLIC选项来创建公共数据库连接。否则,将创建专用数据库连接。

  • 当您使用CREATE DATABASE LINK命令时,数据库连接名称和给定的连接属性存储在名为pg_catalog.edb_dblink系统表中。当使用给定的数据库连接时,包含定义此数据库连接的edb_dblink条目的数据库称为本地数据库。其连接属性在edb_dblink条目中定义的服务器和数据库称为远程数据库。

示例

创建OCI数据库连接。

CREATE DATABASE LINK ora_dblink
  CONNECT TO admin IDENTIFIED BY 'mypassword'
  USING oci '//orachannel/acctg';

创建postgres_fdw数据库连接。

CREATE DATABASE LINK pg_dblink
  CONNECT TO admin IDENTIFIED BY "mypassword"
  USING (channel_name 'localhost', dbname 'marketing'); 

使用数据库连接。

SELECT * FROM emp@ora_link;

结果显示如下:

empno | ename  |    job    | mgr  |      hiredate      | sal  | comm | deptno
-------+--------+-----------+------+--------------------+------+------+--------
  7369 | SMITH  | CLERK     | 7902 | 17-DEC-80 00:00:00 |  800 |      |     20
  7499 | ALLEN  | SALESMAN  | 7698 | 20-FEB-81 00:00:00 | 1600 |  300 |     30
  7521 | WARD   | SALESMAN  | 7698 | 22-FEB-81 00:00:00 | 1250 |  500 |     30
  7566 | JONES  | MANAGER   | 7839 | 02-APR-81 00:00:00 | 2975 |      |     20
(4 rows)

使用数据库连接。

SELECT d.deptno, d.dname, e.empno, e.ename, e.job, e.sal, e.comm FROM
emp@ora_link e, dept@fdwlink d WHERE e.deptno = d.deptno ORDER BY 1, 3;

结果显示如下:

deptno |   dname    | empno | ename  |    job    | sal  | comm
--------+------------+-------+--------+-----------+------+------
     10 | ACCOUNTING |  7782 | CLARK  | MANAGER   | 2450 |
     10 | ACCOUNTING |  7839 | KING   | PRESIDENT | 5000 |
     10 | ACCOUNTING |  7934 | MILLER | CLERK     | 1300 |
     20 | RESEARCH   |  7369 | SMITH  | CLERK     |  800 |
     20 | RESEARCH   |  7566 | JONES  | MANAGER   | 2975 |
     20 | RESEARCH   |  7788 | SCOTT  | ANALYST   | 3000 |
     20 | RESEARCH   |  7876 | ADAMS  | CLERK     | 1100 |
     20 | RESEARCH   |  7902 | FORD   | ANALYST   | 3000 |
     30 | SALES      |  7499 | ALLEN  | SALESMAN  | 1600 |  300
     30 | SALES      |  7521 | WARD   | SALESMAN  | 1250 |  500
     30 | SALES      |  7654 | MARTIN | SALESMAN  | 1250 | 1400
     30 | SALES      |  7698 | BLAKE  | MANAGER   | 2850 |
     30 | SALES      |  7844 | TURNER | SALESMAN  | 1500 |    0
     30 | SALES      |  7900 | JAMES  | CLERK     |  950 |
(14 rows)

  • 本页导读 (0)
文档反馈