当前位置:首页 > GreenPlum使用手册
\\\\\\\\\
\\\)
WITH (OIDS=FALSE) ;
1 启动装载服务(集成到gp环境里了):
gpfdist -d /home/gpadmin/input -p 8088 -l /home/gpadmin/gpfdist.log &
1 装载: 进入数据库
insert into ips_sip_t select * from ext_ips_sip_t_new;
装载ok
3.4.1.2 利用gpload导入数据
类似于ORACLE SQL*LOADER,gpload是EMC在greenplum中提供的用来进行数据装载的工具。
gpload也是通过它的控制文件指定装载的细节信息。所以编写控制文件是用好gpload的关键所在。gpload的控制文件采用YAML1.1文档格式编写,因此它必须得是有效的YAML格式。具体格式如下 ---
VERSION: 1.0.0.1
--指定控制文件schema的版本
DATABASE: db_name
--指定连接数据库的名字,如果没有指定,由环境变量$PGDATABASE,或者通过gpload参数-d指定 USER: db_username
--指定连接目标数据库的用户名,如果不使用超级管理员,服务参数gp_external_grant_privileges必须设臵成on。 HOST: master_hostname
--指定master主机名,也可以通过gpload的-h选项,或者环境变量$PGHOST指定
PORT: master_port
--指定master的连接端口号,默认是5432,或者通过gpload命令的-p选项或者环境变量$PGPORT指定。 GPLOAD:
--必须指定,表示装载设臵部分在它下面必须定义INPUT:和OUTPUT:两个部分。
INPUT:
--必须指定,这部分指定装载数据的格式和位臵
- SOURCE:
--必须指定,定义source文件的位臵,每个输入部分可以定义多个source部分, windows路径的指定比较特别,比如c:\\ 要写成 c:/ LOCAL_HOSTNAME:
--指定gpload运行的主机名称和ip地址,如果有多块网卡,可以同时使用它们,提高装载速度。默认只使用首选主机名和IP。 - hostname_or_ip PORT: http_port
--指定gpfdist使用的端口,也可以选择端口范围,由系统选择,如果同时指定,port设臵优先级高。
| PORT_RANGE: [start_port_range, end_port_range] FILE:
--指定装载数据文件的位臵,目录或者命名管道。如果文件使用gpzip或者bzip2进行了压缩,它可以自动解压。可以使用通配符*和C语言风格的关系匹配模式指定多个文件。
- /path/to/input_file - COLUMNS:
--指定数据源的数据格式,如果没有指定这部分,source表的列顺序,数量,以及数据类型必须与目标表一致。 - field_name: data_type - FORMAT: text | csv
--指定文件格式是text还是csv
- DELIMITER: 'delimiter_character'
--指定文本数据域(列)之间的分割符,默认是|
- ESCAPE: 'escape_character' | 'OFF'
--text定义转义字符,text格式默认是\\,在text格式中可以选择off关掉转义字符(web log处理时比较有用) - NULL_AS: 'null_string'
--指定描述空值的字符串,text格式默认是\\N,csv格式不使用转义符号的空值。
- FORCE_NOT_NULL: true | false
--csv格式,强制所有字符默认都用??括起,因此不能有空值,如果两个分割符之间没有值,被当做0长度字符串,认为值已经丢失。 - QUOTE: 'csv_quote_character'
--csv指定转义字符,默认是\
- HEADER: true | false
--是否跳过数据文件第一行,当做表头
- ENCODING: database_encoding
--指定数据源的字符集
- ERROR_LIMIT: integer
--指定由于不符合格式数据记录的上限,如果超过该上限,gpload停止装载,否则正确记录可以被装载,错误记录抛出写入错误表。但它仅支持数据格式错误,不支持违背约束的问题
- ERROR_TABLE: schema.table_name
--指定不符合格式要求记录的错误表。如果指定的表不存在系统自动创建。 OUTPUT:
- TABLE: schema.table_name
--指定装载的目标表
- MODE: insert | update | merge
--指定操作模式,默认是insert。merge操作不支持使用随机分布策略的表。 - MATCH_COLUMNS:
--为update操作和merge操作指定匹配条件。
- target_column_name - UPDATE_COLUMNS:
--为update操作和merge操作指定更新的列
- target_column_name
- UPDATE_CONDITION: 'boolean_condition'
--指定where条件,目标表中只有满足条件的记录才能更改,(merge情况下,只有满足条件的记录才能insert) - MAPPING:
--指定source列和目标列的映射关系。
target_column_name: source_column_name | 'expression' PRELOAD:
--指定load之前的操作 - TRUNCATE: true | false
--如果设臵成true,装载之前先删除目标表中所有记录,再装载 - REUSE_TABLES: true | false
--设臵成true,不会删除外部表对象会这中间表对象。从而提升性能。 SQL:
- BEFORE: \
--装载操作开始前执行的SQL,比如写日志表 - AFTER: \
--装载操作之后执行的SQL。
gpload YAML数据记载控制文件使用示例(DPI集团监控中心gpload数据加载控制文件): goload命令使用格式:
gpload -f control_file [-l log_file ] [ -h hostname ] [ -p port] [ -U username ] [ -d database ] [ -W] [[-v | -V] [ -q]] [-D]
参数说明: -f control_file YAML控制文件 -l log_file数据记载过程记录日志文件位臵 -h hostname GreenPlum数据库主机
-p port GreenPlum数据库端口号 -U username 连接到数据库的用户名 -d database 使用的数据库 -v 显示数据加载过程
-V 显示非常详细的加载过程 -D debug模式
-q 安静加载,产生的日志都记录到日志文件中
gpload是一个非常灵活的工具,据说可以实现文件不落地加载,可以大大提高数据装载吞吐量。
3.4.2 SQL并行查询 3.4.3 聚合函数 3.4.4 索引
在OLTP环境中,为了追求最快的响应时间而大量的使用索引。一般都是单条命中或少量数据集。
但是GP一般都是用来做OLAP,基本都是全表扫描,故应该尽量少的使用索引。 GP推荐在没有加任何索引的情况下,查看下你的查询的消耗情况。 (注:有主键的表,系统会自动创建主键索引。)
------建索引需考虑------- 1. 查询负载
BI一般都访问大数据集,因此不能利用上索引。
针对OLAP型数据库,序列读取大批量数据比用索引随机扫描的性能要好。 2. 不要频繁更新的字段上建索引 3. 选择性的创建B-tree索引
索引选择度 = 同列的distinct个数 / 全部行数
例如:一个表有1000行,某列有800个唯一值,索引的选择度是0.8 唯一索引的选择度是1.0,这是最好情况 4. 在低选择性的列使用Bitmap索引
GP新增Bitmap索引,在postgresql是没有的 5. 索引列通常用来做join
共分享92篇相关文档