什么是外部表

在GBase 8t中,支持创建一种不受数据库服务器管理的数据表,表的数据来源于格式化的数据文件,数据库使用FIFO VP以Nonblocking的方式来操作表中的数据,因此可以实现高速的数据导入导出。

创建外部表

外部表可以采用以下三种方法创建:

1.使用带有列指定的 CREATE EXTERNAL TABLE 语句

CREATE EXTERNAL TABLE et_state

(code CHAR(2),sname CHAR(15))

USING (DATAFILES ("DISK:/data/NA_states.unl", "DISK:/data/SA_states.unl"));

2.使用带有一个 SAMEAS 子句的 CREATE EXTERNAL TABLE

CREATE EXTERNAL TABLE et_state SAMEAS state

USING (DATAFILES ("DISK:/data/states.unl"));

3.使用 SELECT 语句从一个数据源选择构成外部表的数据

SELECT *

FROM state

INTO EXTERNAL et_state

USING (DATAFILES("DISK:/data/states.unl"));

使用外部表进行数据导入

下面是一个数据加载的例子:

欲加载的表结构如下:

create table warehouse

(

w_id smallint not null ,

w_ytd decimal(12,2),

w_tax decimal(4,4),

w_name char(10),

w_street_1 char(20),

w_street_2 char(20),

w_city char(20),

w_state char(2),

w_zip char(9)

) ;

create unique index idx_warehouse on warehouse(w_id);

数据文件路径为/home/informix/data/warehouse.unl,使用外部表进行数据加载时要保证每行数据末尾都要有一个分隔符,否则会报错,这与使用load进行数据导入时不同。

如下为数据导入步骤,

1,创建表warehouse,不创建表warehouse上的索引

2,创建外部表warehouse_ext

drop table if exists warehouse_ext;

create external table warehouse_ext sameas warehouse

using

(datafiles("DISK:/home/informix/data/warehouse.unl"),

format "delimited",

DELIMITER "|",

rejectfile "/home/informix/data/warehouse.err",

maxerrors 10000

);

3,手工做一个检查点

使用使用onmode -c将表结构刷会磁盘,否则在数据加载过程中会先写物理日志,影响数据加载的速度。

4,修改表warehouse为裸表

这样才能使用到Informix中的Light Append,加快数据导入的速度

alter table warehouse type(raw);

5,打开PDQ,进行数据导入,并创建表上的索引

set pdqpriority 100;

insert into warehouse select * from warehouse_ext;

alter table warehouse type(standard);

create unique index idx_warehouse on warehouse(w_id);

数据导入导出监控

可以使用onstat使用来查看数据的导入导出速度

查看数据导入进度:

[informix@centos7 ~]$ onstat -g lap

GBase 8t V8.5 Server Version 12.10.FC4G1AEE -- On-Line -- Up 00:01:06 -- 2394568 Kbytes

Light Append Info

session id address cur_ppage la_npused la_ndata la_nrows bufcnt

la_nrows为当前导入的记录数

查看数据导出进度:

[informix@centos7 ~]$ onstat -g scn

GBase 8t Database Server Version 12.10.FC4G1AEE -- On-Line -- Up 02:09:24 -- 1385528 Kbytes

Light Scan Info

descriptor address next_lpage next_ppage ppage_left bufcnt look_aside

RSAM batch sequential scan info

SesID Thread Partnum Rowid Rows Scan'd Scan Type Lock Mode Notes

" 88 167 50013c 3041907 1185648 Light +Test Forward row lookup,Must copy,"

RSAM batch index scan info

SesID Thread Partnum Scan Type Lock Mode Notes

Rows Scan 为当前导出的记录数

注意事项

在使用外部表进行数据加载的时候有两点需要注意,

使用Light Append加快数据导入的速度,与light scan不同的是,我们没有办法强制启用light append,而只能在同时满足如下2个特定条件的情况下,数据库优化器将自动启用。

Ø Raw table 即对表的操作取消日志

create raw table…,或者通过alter table tabname type(raw);来创建或者修改为rawtable。对临时表with no log情况也有效。

Ø No Index 表没有任何索引

在创建完外部表后需要手工做一个检查点的操作,否则会将数据先写入物理日志,再往dbspace上写。我们可以使用onstat -D监控数据读写情况,使用外部表进行数据加载时,是不会写物理日志或只有少量的物理日志读写,如没有手工做检查点,则会看到有大量的物理日志读写,这一步完全是可跳过的。

使用外部表进行数据导出

使用外部表进行数据导出时大体的步骤与上面的相同,只是在进行数据导出时需要打开轻量扫描的开关

set environment IFX_BATCHEDREAD_TABLE '1';

gbase 导出_使用GBase 8t外部表进行高速数据导入导出相关推荐

  1. hive:建库建表、表分区、内部表外部表、数据导入导出

    hive建库建表与数据导入 建库 hive中有一个默认的库: 库名: default 库目录:hdfs://hdp20-01:9000/user/hive/warehouse 新建库: create  ...

  2. 达梦数据库代码导出_达梦数据库常见问题-命令行工具-导入导出工具

    1.导入dmp文件出现各种初始化参数不一致的警告 (页大小不匹配,restore error code:-8210:CASE_SENSIVE参数不匹配.大小写参数不一致,大小写区分属性不匹配,rest ...

  3. mysql 分区 导出_mysql普通表变成分区表导入导出

    环境:tidb.linux 1.先确认主键.创建分区表(用于代替原表) SELECT column_name FROM INFORMATION_SCHEMA.`KEY_COLUMN_USAGE` WH ...

  4. linux上oracle导入mysql_linux下的oracle数据库和表空间的导入导出

    由于oracle是安装在linux上面,因此需要oracle的导入导出都是使用命令进行操作.oracle允许整个数据库导入导出和表空间的导入导出. 数据库导入导出 以下操作是在操作系统控制台命令中执行 ...

  5. 带你实现java根据表结构动态导入导出Excel

    你知道的越多,你不知道的越多 点赞再看,养成习惯 如果您有疑问或者见解,欢迎指教: 企鹅:869192208 前言 最近在甲方爸爸的要(威)求(逼)下,项目经理带来了客户的全新需求,希望能够在原有编辑 ...

  6. 利用外部命令Oralce数据库导入导出

    1--数据库导出(exp) 首先进入命令行 导出数据库 在命令行中输入如下命令: exp   c2j/c2j@c2j file=c:/table.dmp tables=jbitaku,jbitakum ...

  7. Oracle创建用户、表空间、导入导出、...命令

    //创建临时表空间 create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserve ...

  8. Oracle创建删除用户、角色、表空间、导入导出数据库命令行方式总结

    说明: 在创建数据库时输入的密码,是修改系统默认的密码,以system和sysman等系统默认身份登录时要输入的密码就是修改后的密码(创建数据库时输入的密码) 如果要创建新的用户就必须以system或 ...

  9. hibernate mysql 映射_hibernate与mysql映射类型对应表与mysql导入导出

    http://blog.sina.com.cn/s/blog_5f240fc40100etlt.html 一.记录下hibernate mysql映射类型对应表: 1.常规Hibernate 映射 i ...

最新文章

  1. Java虚拟机类加载机制
  2. 第二章 栈和队列(1)——顺序存储
  3. Nginx与Zuul之间区别
  4. 零基础学习java------day11------常用API
  5. 【原创】STM32工程新建步骤
  6. Qt实践录:非窗体代码片段
  7. Qt5学习笔记之bin文件合成工具三:偏移量数据填充
  8. Dijkstra 路径规划 C#
  9. docker如何配置阿里云加速器
  10. 笔记 黑马程序员C++教程从0到1入门编程——核心编程
  11. 【对讲机的那点事】带你玩转摩托罗拉GP328对讲机读写频
  12. 【转】上大数学系博士点
  13. PMP子过程定义总结
  14. 机械革命 无界16pro闪屏
  15. 用计算机过去机读卡,阅卷机读卡机答题卡使用流程
  16. 教外谈(3):C/C++实现本地搜索引擎
  17. 微信小程序盲盒系统源码 附带教程
  18. 大数据可视化设计开发方案调研
  19. mysql 列转行union all_sql:mysql:列转行(转为多个字段)
  20. 基于机器学习的古代汉语自动分词标注算法及语料库研究

热门文章

  1. 如何在Mac 上更改冲突的键盘快捷键?
  2. 【OS基础】UEFI与 Legacy BIOS两种启动模式详解
  3. 首次安装“超市通”、“金管家”等POS软件注意事项
  4. 猜数字游戏(保姆式教程)
  5. vue文件目录结构详解(一)---基础配置
  6. 华为校园实习生招聘总结与感悟
  7. 携程 | 站会与公约
  8. 科普:原型验证系统VS硬件仿真器,哪一个更好?
  9. 深度学习在医学图像配准中的应用
  10. 云原生安全系列 1:零信任安全和软件开发生命周期