1、什么是dblink
dblink是一个PostgreSQL contrib模块,允许对另一个数据库执行查询。
当前PostgreSQL的模型需要用户连接到一个特定的数据库服务器上。因此,它本身是不可能对另一个数据库执行SQL查询。
通常我们不鼓励使用dblink查询远程数据库。
我们总是建议用户使用模式。但有时,这也许还不够。
不管怎样,这篇文章向您展示如何PostgreSQL和Greenplum是相关的。
2、准备:
greenplum数据库:
检查环境:看是否已经安装了,如果已经安装了,直接跳到第4步。
gpadmin@linux-hd1:~> pg_config --pkglibdir
/usr/local/greenplum-db/lib/postgresql/
然后在上边这个目录里检查一下各个节点主机的是否安装。(all_host:包含你所有主备用控制节点和数据节点)
gpadmin@linux-hd1:~> gpssh -f all_host 'll /usr/local/greenplum-db/lib/postgresql/dblink.so'
1、主节点上没有,其他节点上有的,建议重新安装DBLINK组件
2、主节点上有,其他节点上没有的,将主节点上的文件复制到其他节点上。
3、安装dblink组件
postgressql8.2版本的源代码:(建议使用8.2的版本,9.2版本在编码的时候报错,提示少文件)
下载地址:http://www.postgresql.org/ftp/source/v8.2.23/
上传到GREENPLUM数据库主节点上,如:上传至/home/gpadmin
*解压缩
gpadmin@linux-hd1:~> tar vxf postgresql-8.2.23.tar.gz
*进入dblink目录:
gpadmin@linux-hd1:~> cd /home/gpadmin/postgresql-8.2.23/contrib/dblink/
*编辑 Makefile,在第PG_CPPFLAGS语句后面加上-w(通常是在第4行,作用是忽略警告),修改后如下:
PG_CPPFLAGS = -I$(libpq_srcdir) -w
*编译代码
gpadmin@linux-hd1:~/postgresql-8.2.23/contrib/dblink> make USE_PGXS=1 install
sed 's,MODULE_PATHNAME,$libdir/dblink,g' dblink.sql.in >dblink.sql
gcc -m64 -O3 -funroll-loops -fargument-noalias-global -fno-omit-frame-pointer -g -finline-limit=1800 -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include -Werror -fpic -I/usr/local/greenplum-db-4.2.2.4/include -w -I. -I/usr/local/greenplum-db-4.2.2.4/include/postgresql/server -I/usr/local/greenplum-db-4.2.2.4/include/postgresql/internal -D_GNU_SOURCE -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include/libxml2 -c -o dblink.o dblink.c
gcc -m64 -O3 -funroll-loops -fargument-noalias-global -fno-omit-frame-pointer -g -finline-limit=1800 -std=gnu99 -Wall -Wmissing-prototypes -Wpointer-arith -Wendif-labels -Wformat-security -fno-strict-aliasing -fwrapv -I/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/include -Werror -fpic -shared dblink.o -L/usr/local/greenplum-db-4.2.2.4/lib -L/usr/local/greenplum-db-4.2.2.4/lib -L/usr/local/greenplum-db-4.2.2.4/lib -L/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/lib -L/home/build/builds/greenplum-db/Release-4_2_2_4-build-1_rc_100312-1300/Release-4_2_2_4-build-1_src/ext/suse10_x86_64/lib -lpq -Wl,-rpath,'/usr/local/greenplum-db-4.2.2.4/lib',--enable-new-dtags -o dblink.so
/bin/mkdir -p '/usr/local/greenplum-db-4.2.2.4/lib/postgresql'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 755 dblink.so '/usr/local/greenplum-db-4.2.2.4/lib/postgresql/dblink.so'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./uninstall_dblink.sql '/usr/local/greenplum-db-4.2.2.4/share/postgresql/contrib'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 644 dblink.sql '/usr/local/greenplum-db-4.2.2.4/share/postgresql/contrib'
/bin/sh /usr/local/greenplum-db-4.2.2.4/lib/postgresql/pgxs/src/makefiles/../../config/install-sh -c -m 644 ./README.dblink '/usr/local/greenplum-db-4.2.2.4/doc/postgresql/contrib'
*分发dblink.so到各台主机的指定目录下:
注意下边这个/home/gpadmin/host_all文件里要包含你所有的主用备用控制节点和数据节点
gpadmin@linux-hd1:~/postgresql-8.2.23/contrib/dblink> gpscp -f all_host dblink.so =:/usr/local/greenplum-db/lib/postgresql/dblink.so
4、创建dblink相关的系统函数:注意这个my_db是你的本地数据库名。
gpadmin@linux-hd1:~> psql -f dblink.sql my_db
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
REVOKE
REVOKE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE TYPE
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
CREATE FUNCTION
5、测试dblink
*如果是在一个数据库实例里,可以不用写远程主机、用户名密码等。
*myconn是一个描述符号
*dbname=bi:是数据库连接串。本地可以这样写,远程得写成hostaddr=***.***.***.*** port=5432 dbname=*** user=*** password=***
*insert * from select语句不能使用myconn 得写数据库连接串
gpadmin@linux-hd1:~> psql my_db
psql (8.2.15)
Type "help" for help.
my_db=# \l
List of databases
Name | Owner | Encoding | Access privileges
-----------+---------+----------+---------------------
bi | gpadmin | UTF8 |
createdb | gpadmin | UTF8 |
my_db | gpadmin | UTF8 |
postgres | gpadmin | UTF8 |
template0 | gpadmin | UTF8 | =c/gpadmin
: gpadmin=CTc/gpadmin
template1 | gpadmin | UTF8 | =c/gpadmin
: gpadmin=CTc/gpadmin
(6 rows)
my_db=# select dblink_connect('myconn','dbname=bi');
dblink_connect
----------------
OK
(1 row)
my_db=# select dblink_connect('myconn','dbname=bi');
ERROR: duplicate connection name
my_db=# select * from dblink('myconn','select * from public.a');
ERROR: a column definition list is required for functions returning "record"
LINE 1: select * from dblink('myconn','select * from public.a');
^
my_db=# select * from dblink('myconn','select * from public.a') AS t1(v varchar) LIMIT 5;
v
----
3
21
41
4
11
(5 rows)
my_db=# select * from dblink('myconn','select * from public.a') AS t1(v1 varchar);
v1
----
1
31
2
3
21
41
4
11
(8 rows)
my_db=# insert into public.ab select * from dblink('myconn','select * from public.a') AS t1(v1 varchar);
ERROR: could not establish connection (entry db linux-hd1:5432 pid=6389)
DETAIL: missing "=" after "myconn" in connection info string
my_db=# insert into public.ab select * from dblink('dbname=bi','select * from public.a') AS t1(v1 varchar);
INSERT 0 8
my_db=# select * from public.ab
my_db-# ;
v1
----
21
4
1
3
41
31
2
11
(8 rows)
my_db=#
至此结束。
- 浏览: 1058246 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (1441)
- 软件思想&演讲 (9)
- 行业常识 (250)
- 时时疑问 (5)
- java/guava/python/php/ruby/R/scala/groovy (213)
- struct/spring/springmvc (37)
- mybatis/hibernate/JPA (10)
- mysql/oracle/sqlserver/db2/mongdb/redis/neo4j/GreenPlum/Teradata/hsqldb/Derby/sakila (268)
- js/jquery/jqueryUi/jqueryEaseyUI/extjs/angulrJs/react/es6/grunt/zepto/raphael (81)
- ZMQ/RabbitMQ/ActiveMQ/JMS/kafka (17)
- lucene/solr/nuth/elasticsearch/MG4J (167)
- html/css/ionic/nodejs/bootstrap (19)
- Linux/shell/centos (56)
- cvs/svn/git/sourceTree/gradle/ant/maven/mantis/docker/Kubernetes (26)
- sonatype nexus (1)
- tomcat/jetty/netty/jboss (9)
- 工具 (17)
- ETL/SPASS/MATLAB/RapidMiner/weka/kettle/DataX/Kylin (11)
- hadoop/spark/Hbase/Hive/pig/Zookeeper/HAWQ/cloudera/Impala/Oozie (190)
- ios/swift/android (9)
- 机器学习&算法&大数据 (18)
- Mesos是Apache下的开源分布式资源管理框架 (1)
- echarts/d3/highCharts/tableau (1)
- 行业技能图谱 (1)
- 大数据可视化 (2)
- tornado/ansible/twisted (2)
- Nagios/Cacti/Zabbix (0)
- eclipse/intellijIDEA/webstorm (5)
- cvs/svn/git/sourceTree/gradle/jira/bitbucket (4)
- jsp/jsf/flex/ZKoss (0)
- 测试技术 (2)
- splunk/flunm (2)
- 高并发/大数据量 (1)
- freemarker/vector/thymeleaf (1)
- docker/Kubernetes (2)
- dubbo/ESB/dubboX/wso2 (2)
最新评论
Greenplum数据库的dblink功能之搭建
发表评论
-
Mysql中DATE_SUB 使用方法结合查询一天内,一周内,一月内的信息实例讲解
2018-02-07 09:05 779在对数据查询或菜单时经常要对指定的时间或时间段进行查询,例 ... -
MySQL里获取当前week、month、quarter的start_date/end_date
2018-02-06 13:51 675select curDate(); #获取当前日 ... -
查看数据库
2018-01-28 20:38 537---mysql查看用户名和密码 select Hos ... -
数据导入到数据库
2018-01-09 20:23 455数据导出当数据量大时最好是dump文件,sql文件过大不好执行 ... -
使用数据库客户端工具Oracle SQL Developer加载第三方驱动连接mysql的方法
2018-02-28 09:20 1259用Oracle SQL Developer时遇到no oc ... -
数据连接符
2018-02-28 09:32 532不同的数据库中字符串连接符不同,下面列举几种数据库的连接符 ... -
commit
2018-01-08 10:12 0刚接触SQLSERVER,刚才insert了一条记录,为什么 ... -
Redis操作命令总结
2017-10-25 12:43 1695redis-cli 中。 使用命令 ... -
PostgreSQL中表名、字段名大小写问题
2017-10-21 20:59 0学习hibernate的时候,数据库用了PostgreSQL ... -
怎么解决Greenplum中用pg
2018-07-19 09:51 483基本思路是为ns1.table1设置分布策略:root登陆 ... -
mysql unrecognized service问题解决
2017-10-21 20:34 0unrecognized 英 [ʌnˈrekəgna ... -
Oracle创建视图、通过视图创建表
2017-10-21 19:11 1151创建视图: [sql] view plain c ... -
PostgreSQL中表名、字段名大小写问题
2017-10-19 10:48 1293如果有视图依赖该表则该表不能删除 学习hibern ... -
关于性能测试几个名词概念的说明
2017-10-11 10:05 444什么是性能测试 在一定的负载下,系统的响应时间 ... -
数据库性能优化详解
2017-10-11 09:59 8841.数据库访问优化法则 要正确的优化SQL,我们需 ... -
Oracle怎样把varchar2型转成number型
2017-09-23 11:13 1666varchar2型转成number型的前提条件是varch ... -
oracle中字符串的大小比较,字符串与数字的比较和运算
2017-09-23 11:08 2826Oracle比较字符串是根据ASCII码来的,第一个字母的 ... -
greenplum 程序开发优化原则
2017-09-22 14:07 724greenplum 程序开发优化原则 1、批量数据处理后, ... -
PostgreSQL 时序最佳实践 - 证券交易系统数据库设计 - 阿里云RDS PostgreSQL最佳实践
2017-09-22 01:06 1291PostgreSQL , 证券 , 时序数据 , JSON ... -
PostgreSQL 时序最佳实践
2017-09-21 12:26 1181以股票交易为例,一共 ...
相关推荐
该文档不仅内容详尽且易于理解,还特别注重实用性,旨在帮助用户更好地了解并运用Greenplum数据库的各项功能。 #### 文档来源与版本差异 文档的源码同时被Greenplum数据库和PivotalGreenplum数据库所共享。这意味着...
总结,GreenPlum数据库以其独特的MPP架构、高效的数据分布策略、并行处理能力和集成的MapReduce功能,为企业提供了一种强大、可扩展的大数据解决方案。通过合理利用GreenPlum,企业可以应对大数据挑战,实现高效的...
"greenplum-jdbc-5.1.4.jar"是Greenplum数据库的JDBC驱动程序的一个版本,用于在Java环境中与Greenplum进行通信。 **Greenplum数据库** Greenplum是由Pivotal Software开发的一个高度可扩展的、并行处理的数据库...
在GREENPLUM数据库中,用户有时需要实现跨数据库的数据查询,类似于Oracle的DBLINK功能。虽然GREENPLUM本身不直接支持这种特性,但通过利用WEB EXTERNAL TABLE,我们可以间接实现跨数据库查询。以下是一个详细的过程...
它由Greenplum公司开发,现在是Pivotal软件公司的产品之一。Greenplum具备处理PB级别数据的能力,支持复杂的查询,并能通过并行化技术有效提升查询性能。掌握Greenplum数据库的最佳实践是确保数据库集群高效运行的...
一个还比较不错的greenplum数据库基础培训,中文版本
Greenplum数据库开发基础 Greenplum数据库是一种Massively Parallel Processing(MPP)架构的数据库管理系统,适用于大规模数据处理和分析。下面是Greenplum数据库开发基础的知识点摘要: 1. Greenplum数据库概述...
greenplum数据库安装文档
"Greenplum 数据库最佳实践" 本文总结了 Greenplum 数据库的最佳实践...通过正确地设计数据模型、选择合适的存储模式、配置压缩和分布策略、正确地管理内存和使用分区功能,可以提高 Greenplum 数据库的性能和可靠性。
MPP(Massively Parallel Processing)架构是Greenplum的核心特性之一,它将大型数据集分散在多个节点上,每个节点都有自己的内存和磁盘空间,通过高速网络进行通信。这种架构允许数据并行处理,显著提升了大数据...
绿盟Greenplum数据库巡检报告是对数据库健康状况和运行环境进行系统性检查的重要文档,旨在确保数据库高效、稳定地运行。以下将详细介绍报告中提到的关键知识点: 1. **查看集群当前系统时间**: 系统时间是操作...
Greenplum的核心优势之一是其SQL执行过程,它通过优化查询执行计划来实现高效的数据处理。这包括负载数据加载、近实时数据加载、混合存储引擎(支持行存和列存)以及对SQL 2003 OLAP的扩展支持。此外,它支持多种...
3. 使用手册:使用手册详尽地介绍了Greenplum的各种功能和使用技巧,包括数据导入导出、性能调优、安全设置等。 四、GP培训-1 "GP培训-1"可能是系列培训材料的一部分,可能涵盖了基础理论、实践操作和案例分析等...
Greenplum数据库是一种基于PostgreSQL 8.2的海量并行处理(Massively Parallel Processing, MPP)数据库管理系统,特别设计用于数据仓库和商业智能(BI)应用。它继承了PostgreSQL的客户端功能,并增加了对并行处理和...
1.1. GreenPlum数据库概述 1 1.2. GreenPlum数据库架构原理 1 2. SUSE Linux Enterprise 11 64-bit操作系统安装过程 2 2.1. 初始化阶段 2 2.2. 系统分区 4 2.3. 软件选择和系统任务 12 2.4. 语言选择 14 2.5....
首先,我们来了解 `greenplum.jar` 的基本功能。这个 jar 包包含了 JDBC(Java Database Connectivity)驱动,JDBC 是 Java 语言访问数据库的标准 API,它允许 Java 程序通过 JDBC 驱动与各种数据库建立连接,执行 ...
Greenplum是一个基于MPP(大规模并行处理)架构的开源分布式数据库系统,它提供了高度的可扩展性、可靠性以及与其他数据仓库解决方案相比成本效益高的特性。Greenplum适用于需要处理大量数据的决策支持系统,特别是...
《Greenplum数据库调优1》 在大数据处理领域,Greenplum数据库因其高效的数据处理能力和优秀的并行计算性能而受到广泛关注。然而,为了确保其性能最大化,数据库调优是必不可少的一环。本文将深入探讨Greenplum...
在Greenplum 4.3版本中,虽然它本身不直接包含dblink模块,但我们可以通过引入PostgreSQL的贡献包`postgresql-8.3.23.tar.gz`来实现这个功能。这个压缩包包含了PostgreSQL的源代码,包括dblink模块。以下是创建和...
Greenplum数据库是一种大规模并行处理(MPP)数据库,专门为数据仓库和大数据分析工作负载而设计。它支持标准的SQL语言,并遵守ANSISQL2008标准,具备OLAP功能,同时兼容JDBC和ODBC接口。Greenplum的核心特性是其...