dblink 启动(以下内容均在sql中执行)
dblink官方文档(https://www.postgresql.org/docs/9.5/static/dblink.html)
create extension if not exists dblink; //如果不存在则创建dblink成功后启动后会在数据库中添加函数
Select dblink_connect('dblinktest','host=192.168.1.105 dbname=testdb user=postgres password=1'); //新建一个dblink链接(dbliink链接数据库的自定义名称;host:数据库ip;dbname数据库名称;user:用户名;password:密码)
select * from dblink('dblinktest','select role_name from role') as t(role_name text ) // dblink 查询语句,后面需要声明返回值类型
select dblink_disconnect('dblinktest'); //关闭某个dblink链接
select dblink_get_connections(); //查询所有已链接的dblink
DROP extension dblink //删除dblink
查询返回值问题:函数返回查询生成的行(s)。由于DBLink可以与任何查询一起使用,因此它被声明为返回记录,而不是指定任何特定的列集合。这意味着您必须在调用查询中指定预期的列集,否则PostgreSQL将不知道要期望什么。
dblink 在数据库中添加函数得注释
dblink_connect - 打开与远程数据库的持久连接
dblink_connect_u - 不安全地打开与远程数据库的持久连接
dblink_disconnect - 关闭与远程数据库的持久连接
dblink - 在远程数据库中执行查询
dblink_exec - 在远程数据库中执行命令
dblink_open - 在远程数据库中打开游标
dblink_fetch - 从远程数据库中的打开游标返回行
dblink_close - 关闭远程数据库中的游标
dblink_get_connections - 返回所有打开的命名dblink连接的名称
dblink_error_message - 获取指定连接上的最后一条错误消息
dblink_send_query - 将异步查询发送到远程数据库
dblink_is_busy - 检查连接是否正忙于异步查询
dblink_get_notify - 检索连接上的异步通知
dblink_get_result - 获取异步查询结果
dblink_cancel_query - 取消对指定连接的任何活动查询
dblink_get_pkey - 返回关系主键字段的位置和字段名称
dblink_build_sql_insert - 使用本地元组构建INSERT语句,用替代提供的值替换主键字段值
dblink_build_sql_delete - 使用提供的主键字段值的值构建DELETE语句
dblink_build_sql_update - 使用本地元组构建UPDATE语句,用替代提供的值替换主键字段值
本地postgre SQL开启远程链接方法(若不能进行链接)
只需要修改data目录下的pg_hba.conf和postgresql.conf。
pg_hba.conf:配置对数据库的访问权限,
postgresql.conf:配置PostgreSQL数据库服务器的相应的参数。
介绍配置的步骤:
1.修改pg_hba.conf文件,配置用户的访问权限(#开头的行是注释内容):
1- # TYPE DATABASE USER CIDR-ADDRESS METHOD
2- # "local" is for Unix domain socket connections only
3- local all all trust
4- # IPv4 local connections:
5- host all all 127.0.0.1/32 trust
6- host all all 192.168.1.0/24 md5
7- # IPv6 local connections:
8- host all all ::1/128 trust
其中,第6条是新添加的内容,表示允许网段192.168.1.0上的所有主机使用所有合法的数据库用户名访问数据库,并提供加密的密码验证。
其中,数字24是子网掩码,表示允许192.168.1.0--192.168.1.255的计算机访问!
一般的更改,不需要特别严格的权限控制时,可以直接将第6行,IPv4中换成
host all all 0.0.0.0/0 trust 即可。
2.(若第一条修改后还是不能访问再修改 否则无需修改)修改postgresql.conf文件,将数据库服务器的监听模式修改为监听所有主机发出的连接请求。定位到#listen_addresses=’localhost’。PostgreSQL安装完成后,默认是只接受来在本机localhost的连接请求。将行开头都#去掉,将行内容修改为listen_addresses=’*'来允许数据库