Greenplum-数据导入导出

本文详细介绍了Greenplum中COPY命令和外部表在数据导入导出中的应用,包括COPY命令的使用场景、特点以及与COPY的区别,以及外部表如file、gpfdist和PXF协议的定义、示例和优缺点。

Greenplum主要有两种数据的导入导出方式,一种是通过继承PostgreSQL的COPY命令,另一种是使用外部表的方式。
COPY命令一般是针对小数据量场景,而大数据量的场景则通常使用外部表来实现。

COPY命令

特点:适用数据量较小的场景,串行方式,数据通过Master进行处理。
以下示例演示通过COPY命令进行导入与导出。

COPY导入

=# create table test(a int, b int, c text) distributed randomly;
CREATE TABLE
=# \COPY test FROM '/tmp/file1' DELIMITER ',';
COPY 2
=# select * from test;
 a | b |  c  
---+---+-----
 2 | 2 | bbb
 1 | 1 | aaa
(2 rows)

实际上,COPY命令有几种不同的形式:

  1. 使用copy命令从文件导入,如COPY test FROM ‘/tmp/file0’ DELIMITER ‘|’;
  2. 使用\copy命令从文件导入,如\COPY test FROM ‘/tmp/file1’ DELIMITER ‘,’;
  3. 从STDIN导入,如copy test from stdin;
    \COPY与COPY是完全不同的,COPY命令需要在Master节点上执行,而\COPY命令与COPY FROM STDIN命令则是将数据输送到Master服务,是不需要在Master节点上运行的。

COPY导出

=# \COPY test to '/tmp/file100';
COPY 2
[gpadmin@xduat01 ~]$ cat /tmp/file100 
1       1       aaa
2       2       bbb

使用COPY命令导出,可以是导出一张完整的表,也可以是指定一个查询语句导出部分数据。

外部表

特点:针对大规模并行导入或导出数据,目前支持多种外部表协议,如file协议、gpfdist、pxf等。

file协议

定义:通过 URI 来指向操作系统的文件,URI 由主机名、文件所属的路径和文件名组成,不需要指定端口号,因为访问的是各个计算节点的本地文件。
示例:

[gpadmin@xduat01 tmp]$ cat /tmp/file1
1,1,aaa
2,2,bbb

=# CREATE EXTERNAL TABLE test_ext (a int, b int, c text) LOCATION('file://xduat01/tmp/file1') FORMAT 'text' (delimiter E'\x2c');
CREATE EXTERNAL TABLE

=# \d+ test_ext
External table "public.test_ext"
Column |  Type   | Modifiers | Storage  | Stats target | Description
--------+---------+-----------+----------+--------------+-------------
a      | integer |           | plain    |              |
b      | integer |           | plain    |              |
c      | text    |           | extended |              |
Type: readable
Encoding: UTF8
Format type: text
Format options: delimiter ',' null '\N' escape ''
External options: {}
External location: file://xduat01/tmp/file1
Execute on: all segments

=# select * from test_ext;
a | b |  c
---+---+-----
1 | 1 | aaa
2 | 2 | bbb
(2 rows)

注:一个外部表在定义时可以指定多个URI,但URI的个数不能大于节点上Primary的个数,否则将会报错。

gpfdist协议

定义:通过 URI 来指向 gpfdist 服务的相对路径的文件,数据库的所有Primary 都必须能够访问 qbfdist 服务。
gpfdist服务的命令,在数据库集群的每台主机上都存在,在$GPHOME/bin 目录下,source 了 GP 的 path 文件之后,就可以直接使用该命令。
如果要提升多个外部表的并发导入能力,可以启动多个 gpfdist 服务供不同的外部表访问。
gpfdist还支持数据转换功能,通过在 URI 中使用 transform 参数来指定。
gpfdist 服务,允许一个外部表,同时使用一台 gpfdist 文件服务器的多个网络端口,以提升数据访问的性能。

使用gpfdist的步骤如下:

1 启动gpfdist服务

以下示例是在一个节点上使用不同的端口来启动两个pgfdist服务

nohup gpfdist -p 8081 -d /../ &
nohup gpfdist -p 8082 -d /../ &
2 创建外部表
=# CREATE EXTERNAL TABLE test_ext1 (a int, b int, c text) LOCATION('gpfdist://xduat01:8081/tmp/file1') FORMAT 'text' (delimiter E'\x2c');
CREATE EXTERNAL TABLE
=# CREATE EXTERNAL TABLE test_ext2 (a int, b int, c text) LOCATION('gpfdist://xduat01:8082/tmp/file2') FORMAT 'text' (delimiter E'\x2c');
CREATE EXTERNAL TABLE

=# select * from test_ext1;
a | b |  c
---+---+-----
1 | 1 | aaa
2 | 2 | bbb
(2 rows)
=# select * from test_ext2;
a | b |  c
---+---+-----
3 | 3 | ccc
4 | 4 | ddd
5 | 5 | eee
(3 rows)

=# \d+ test_ext1;
External table "public.test_ext1"
Column |  Type   | Modifiers | Storage  | Stats target | Description
--------+---------+-----------+----------+--------------+-------------
a      | integer |           | plain    |              |
b      | integer |           | plain    |              |
c      | text    |           | extended |              |
Type: readable
Encoding: UTF8
Format type: text
Format options: delimiter ',' null '\N' escape ''
External options: {}
External location: gpfdist://xduat01:8081/tmp/file1
Execute on: all segments
=# \d+ test_ext2;
External table "public.test_ext2"
Column |  Type   | Modifiers | Storage  | Stats target | Description
--------+---------+-----------+----------+--------------+-------------
a      | integer |           | plain    |              |
b      | integer |           | plain    |              |
c      | text    |           | extended |              |
Type: readable
Encoding: UTF8
Format type: text
Format options: delimiter ',' null '\N' escape ''
External options: {}
External location: gpfdist://xduat01:8082/tmp/file2
Execute on: all segments

PXF协议

定义:PXF是Greenplum的平台扩展框架,通过将外部数据源映射成GP的外部表,便利Greenplum能够并行、高吞吐量以及联合查询外部数据源的数据。该扩展插件是基于Apache HAWQ的PXF。
PXF的使用步骤如下:

1 安装pxf.so

在数据库安装目录检查是否已经包含pxf.so的lib包编译,如果不存在lib文件需要上传pxf.so文件,目录为/usr/local/gp/lib/psotgresql/pxf.so

2 上传pxf安装包并配置

准备好下载的pxf.tar.gz并解压到/usr/local/gp目录下,对新加入的pxf安装包添加文件配置

echo 'export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.242.b08-1.h5.ky10.aarch64/jre' >>  .bashrc
echo 'export PXF_CONF=/usr/local/gp/pxf/conf' >>  .bashrc
echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/gp/pxf/lib' >> .bash_profile
echo 'export PATH=$HOME/.local/bin:$HOME/bin:$GPHOME/bin:$GPHOME/pxf/bin:$PATH' >>.bash_profile
3 新建jdbc配置文件

在/usr/local/gp/pxf/servers下新建文件夹connora并创建jdbc-site.xml文件,内容如下

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <property>
        <name>jdbc.driver</name>
        <value>oracle.jdbc.driver.OracleDriver</value>
    </property>
    <property>
        <name>jdbc.url</name>
        <value>jdbc:oracle:thin:@xx.xx.xx.xx:1521:sjfxdb</value>
    </property>
    <property>
        <name>jdbc.user</name>
        <value>icl</value>
    </property>
    <property>
        <name>jdbc.password</name>
        <value>icl123</value>
    </property>
</configuration>
4 初始化pxf
pxf init

如果为集群方式需要使用

pxf cluster init
5 启动pxf
pxf start

如果为集群方式需要使用

pxf cluster start
6 pxf sql以及control文件

如果编译的数据库版本不包含pxf的包,需要手动上传到服务器上,需要把pxf的sql以及control文件上传到文件夹
将以下文件放置到/usr/local/gp/share/postgresql/extension下
pxf–1.0–2.0.sql
pxf–1.0.sql
pxf–2.0.sql
pxf.control
pxfinvalid.sql
pxf.sql

7 创建支持pxf协议
CREATE EXTENSION pxf;
8 创建外部表
create EXTERNAL table C_AG_ACCT_INFO
(
  etl_dat          VARCHAR(10),
  legp_cd          VARCHAR(10),
  agr_id           VARCHAR(50),
  agr_mdf          VARCHAR(50),
  src_sys_cust_nbr VARCHAR(50),
  cbs_cust_nbr     VARCHAR(50),
  cust_typ         VARCHAR(10),
  act_nbr          VARCHAR(50),
  sub_act_nbr      VARCHAR(50),
  ibs_obs_id       VARCHAR(10),
  int_act_id       VARCHAR(10),
  。。。
)
 LOCATION ('pxf://icl.C_AG_ACCT_INFO?PROFILE=Jdbc&SERVER=connora')
            FORMAT 'CUSTOM' (FORMATTER='pxfwritable_import');
### 回答1: greenplum-db-6.24.0-ubuntu18.04-amd64.deb是一个针对Ubuntu 18.04操作系统的Greenplum数据库软件包文件。Greenplum是一个强大的、兼容PostgreSQL的分布式数据库管理系统。 Greenplum数据库是为大规模数据处理和分析而设计的,它使用了多个节点(或服务器)以及并行计算的技术。这使得它能够处理大量的数据和复杂的查询,并提供高性能和可靠性。 这个软件包是用于安装Greenplum数据库的工具。安装过程将会包括将软件文件拷贝到适当的目录、配置数据库的参数、创建数据库的用户和角色等步骤。 通过安装Greenplum数据库,用户可以轻松地构建和管理一个分布式的数据仓库。它提供了许多功能,包括数据的导入和导出数据的查询和分析、数据的备份和恢复等。此外,Greenplum支持并行化查询和负载均衡,使得用户可以实现高性能的数据处理。 在安装完成之后,用户可以使用标准的PostgreSQL接口,如pgAdmin或psql等,来连接和管理Greenplum数据库。此外,还可以使用Greenplum提供的特定工具和扩展,以进一步优化和扩展数据库的功能。 总之,greenplum-db-6.24.0-ubuntu18.04-amd64.deb是一个用于安装Greenplum数据库的软件包,它提供了一个强大、高性能和可扩展的分布式数据库解决方案,可以满足大规模数据处理和分析的需求。 ### 回答2: greenplum-db-6.24.0-ubuntu18.04-amd64.deb是一个基于Ubuntu 18.04操作系统和AMD64架构的Greenplum数据库包。 Greenplum是一种开源的关系型分布式数据库,它专为处理大规模数据分析和处理而设计。它采用了Massively Parallel Processing(MPP)架构,可以将数据分布在多个节点上进行并行处理,以提高查询和分析的速度。它支持SQL语言,并具有成熟的事务处理和并发控制功能。 这个软件包是一个.deb格式的安装包,可安装在Ubuntu 18.04操作系统上的AMD64架构下。.deb是Debian软件包管理系统的标准包格式,它包含了安装一个软件包所需的所有文件和依赖项。 要安装这个软件包,可以通过运行以下命令: ``` sudo dpkg -i greenplum-db-6.24.0-ubuntu18.04-amd64.deb ``` 安装完成后,可以使用相应的命令和配置文件来启动和管理Greenplum数据库。 总而言之,greenplum-db-6.24.0-ubuntu18.04-amd64.deb是一个可用于在Ubuntu 18.04操作系统上安装Greenplum数据库的软件包,它提供了一个高性能的、分布式的关系型数据库解决方案。 ### 回答3: greenplum-db-6.24.0-ubuntu18.04-amd64.deb 是一个用于 Ubuntu 18.04 操作系统、针对 AMD 64 位架构的 Greenplum 数据库软件包。Greenplum 是一个高度可扩展的大数据平台,它基于 PostgreSQL 架构并加以优化,为企业提供了一种高性能、高可用性和高可扩展性的数据库解决方案。该软件包可以被安装在 Ubuntu 18.04 操作系统上,并且支持 64 位的 AMD 处理器。 通过安装该软件包,用户可以获得完整的 Greenplum 数据库系统,包括 Greenplum 数据库服务器、管理工具和其他必需的组件。用户可以使用它来构建和管理大规模的数据分析和处理平台,进行数据存储、查询和分析等操作。Greenplum 数据库采用并行处理和分布式架构,可以处理大量的数据并实现并行计算,因此非常适用于大规模数据处理场景。 安装这个软件包通常需要用户具备一定的 Linux 系统管理经验,用户需要通过终端和命令行来执行相关的安装和配置操作。在安装之前,用户应该先了解自己的操作系统版本,确认是运行在 Ubuntu 18.04 上,并且是否具备了 AMD 64 位架构的硬件支持。 安装软件包之后,用户可以按照官方的安装指南和文档进一步配置 Greenplum 数据库系统,包括创建数据库、添加用户、设置权限等。用户可以通过各种工具和接口来访问和管理 Greenplum 数据库,例如命令行工具、Web 控制台和 JDBC/ODBC 驱动程序等。 总而言之,greenplum-db-6.24.0-ubuntu18.04-amd64.deb 是用于 Ubuntu 18.04 操作系统和 AMD 64 位架构的 Greenplum 数据库软件包,它提供了一种高性能、高可用性和可扩展性的大数据解决方案,用户可以通过安装和配置来构建自己的数据分析和处理平台。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据源的港湾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值