greenplum--数据导入和导出

insert

使用insert语句只适合加载少量的数据。

insert into tablename values (val1,val2,...);insert into (...) select ... from tabname

copy

copy命令可以将文件导入和导出,在gp中数据需要通过master节点,无法实现各个segment节点并行高效数据导入和导出。
使用copy命令的语法如下:

--\h command :可以获取命令的语法
postgres=# \h copy  
Command:     COPY
Description: copy data between a file and a table
Syntax:
--将文件数据导入表,数据是追加到表中的
COPY table [(column [, ...])] FROM {'file' | STDIN}
     [ [WITH] 
       [OIDS]  
       [HEADER]  
       [DELIMITER [ AS ] 'delimiter']  
       [NULL [ AS ] 'null string']
       [ESCAPE [ AS ] 'escape' | 'OFF']
       [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
       [CSV [QUOTE [ AS ] 'quote'] 
            [FORCE NOT NULL column [, ...]]
       [FILL MISSING FIELDS]
     [ [LOG ERRORS INTO error_table] [KEEP] 
       SEGMENT REJECT LIMIT count [ROWS | PERCENT] ]
 
 --将表中数据导入到文件中
COPY {table [(column [, ...])] | (query)} TO {'file' | STDOUT}
      [ [WITH] 
        [OIDS]
        [HEADER]
        [DELIMITER [ AS ] 'delimiter']
        [NULL [ AS ] 'null string']
        [ESCAPE [ AS ] 'escape' | 'OFF']
        [CSV [QUOTE [ AS ] 'quote'] 
             [FORCE QUOTE column [, ...]] ]

外部表

greenplum支持数据的并发加载,gpfdist是并发加载的工具,使用的是外部表。
gpfdist的实现架构图如下:
在这里插入图片描述
gpfdist的工作流程:

  1. 启动gpfdist,并在Master上建表,定义外部表的原数据信息。
  2. 将外部表插入到一张gp的物理表中,开始导入数据。
  3. Segment根据建表时定义的gpfdist url个数,启动相同的并发到gpfdist获取数据。
  4. Segment连接到gpfdist,gpfdist接收数据时开始读取文件,顺序读物文件,然后将文件拆分成多个块,随机抛给Segment。

外部表是一张表的数据指向数据库之外的数据文件。可以对一个外部表执行正常的DML操作,读取数据时,数据库就从数据文件中加载数据。

外部表分为可读和可写外部表,可读外部表用于数据装载、可写外部表用于数据卸载。

创建外部表的语法:

CREATE [READABLE] EXTERNAL TABLE table_name 
     ( column_name data_type [, ...] | LIKE other_table )
      LOCATION ('file://seghost[:port]/path/file' [, ...])
        | ('gpfdist://filehost[:port]/file_pattern[#transform]'
        | ('gpfdists://filehost[:port]/file_pattern[#transform]'
            [, ...])
        | ('gphdfs://hdfs_host[:port]/path/file')
      FORMAT 'TEXT' 
            [( [HEADER]
               [DELIMITER [AS] 'delimiter' | 'OFF']
               [NULL [AS] 'null string']
               [ESCAPE [AS] 'escape' | 'OFF']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CSV'
            [( [HEADER]
               [QUOTE [AS] 'quote'] 
               [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [FORCE NOT NULL column [, ...]]
               [ESCAPE [AS] 'escape']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CUSTOM' (Formatter=<formatter specifications>)
     [ ENCODING 'encoding' ]
     [ [LOG ERRORS INTO error_table] SEGMENT REJECT LIMIT count 
       [ROWS | PERCENT] ]
 ---------------------------------------------------------------      
CREATE [READABLE] EXTERNAL WEB TABLE table_name 
     ( column_name data_type [, ...] | LIKE other_table )
      LOCATION ('http://webhost[:port]/path/file' [, ...])
    | EXECUTE 'command' [ON ALL 
                          | MASTER
                          | number_of_segments 
                          | HOST ['segment_hostname'] 
                          | SEGMENT segment_id ]
      FORMAT 'TEXT' 
            [( [HEADER]
               [DELIMITER [AS] 'delimiter' | 'OFF']
               [NULL [AS] 'null string']
               [ESCAPE [AS] 'escape' | 'OFF']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CSV'
            [( [HEADER]
               [QUOTE [AS] 'quote'] 
               [DELIMITER [AS] 'delimiter']
               [NULL [AS] 'null string']
               [FORCE NOT NULL column [, ...]]
               [ESCAPE [AS] 'escape']
               [NEWLINE [ AS ] 'LF' | 'CR' | 'CRLF']
               [FILL MISSING FIELDS] )]
           | 'CUSTOM' (Formatter=<formatter specifications>)
     [ ENCODING 'encoding' ]
     [ [LOG ERRORS INTO error_table] SEGMENT REJECT LIMIT count 
       [ROWS | PERCENT] ]
------------------------------------------------------------------
CREATE WRITABLE EXTERNAL TABLE table_name
    ( column_name data_type [, ...] | LIKE other_table )
     LOCATION('gpfdist://outputhost[:port]/filename[#transform]'
      | ('gpfdists://outputhost[:port]/file_pattern[#transform]'
          [, ...])
      | ('gphdfs://hdfs_host[:port]/path')
      FORMAT 'TEXT' 
               [( [DELIMITER [AS] 'delimiter']

外部表的优势在于支持从各个segment上并发地通过gpfdist导入数据,效率高。

实例

可写外部表(卸载数据)

  1. 启动gpfdist服务
[gpadmin@mdw ~]$ gpfdist -p 8888 -d /home/gpadmin/master/ 
2020-02-25 10:43:37 36451 INFO Before opening listening sockets - following listening sockets are available:
2020-02-25 10:43:37 36451 INFO IPV6 socket: [::]:8888
2020-02-25 10:43:37 36451 INFO IPV4 socket: 0.0.0.0:8888
2020-02-25 10:43:37 36451 INFO Trying to open listening socket:
2020-02-25 10:43:37 36451 INFO IPV6 socket: [::]:8888
2020-02-25 10:43:37 36451 INFO Opening listening socket succeeded
2020-02-25 10:43:37 36451 INFO Trying to open listening socket:
2020-02-25 10:43:37 36451 INFO IPV4 socket: 0.0.0.0:8888
Serving HTTP on port 8888, directory /home/gpadmin/master
  1. 编写可写外部表
/*创建可写外部表*/
drop EXTERNAL table if exists student_f_et;
create writable external table student_f_et(
 id varchar(4000)
 ,sex varchar(4000)
 ,age varchar(4000)
 ,grade varchar(4000)
)
LOCATION ('gpfdist://192.168.190.144:8888/sutdent.f.dat')   --数据文件的地址
FORMAT 'text' (DELIMITER e'\x0f' null '' ESCAPE 'off')   --数据文件的格式
ENCODING 'UTF8'   --数据文件的编码
;
/*插入表中数据到可写外部表*/
insert into student_f_et (
  id
  ,sex
  ,age
  ,grade
)
select
  id
  ,sex
  ,age
  ,grade
from student
;
/*删除表*/
drop external table if exists student_f_et;
  1. 查看是否成功
2020-02-25 10:55:37 36451 INFO remove sessions
2020-02-25 10:55:37 36451 INFO free session 1582583557-0000000197.0.0.0:/home/gpadmin/master/sutdent.f.dat

存在该数据文件,即创建可写外部表成功。

[gpadmin@mdw ~]$ cd /home/gpadmin/master/
[gpadmin@mdw master]$ ll
total 4
-rw-------. 1 gpadmin gpadmin 84 Feb 25 10:55 sutdent.f.dat

可读外部表(装载数据)

--创建可读外部表
drop EXTERNAL table if exists student_r_et;
create  external table student_r_et(
 id int
 ,sex varchar(2)
 ,age int
 ,grade varchar(20)
)
LOCATION ('gpfdist://192.168.190.144:8888/sutdent.f.dat')   --数据文件的地址
FORMAT 'text' (DELIMITER e'\x0f' null '' ESCAPE 'off')   --数据文件的格式
ENCODING 'UTF8'   --数据文件的编码
;
select * from student_r_et;

在这里插入图片描述
这样就可以将sutdent.f.dat中的数据装入student_r_et表中了。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答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 数据库软件包,它提供了一种高性能、高可用性和可扩展性的大数据解决方案,用户可以通过安装和配置来构建自己的数据分析和处理平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值