Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1620677
  • 博文数量: 201
  • 博客积分: 2812
  • 博客等级: 少校
  • 技术积分: 3029
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-18 18:28
个人简介

从事数据库工作多年,目前看好分布式NeSQL/HTAP数据库在企业客户市场的发展。未来的主要方向是——致力于 NewSQL/HTAP 数据库的推广普及。

文章存档

2016年(1)

2015年(8)

2014年(23)

2013年(50)

2012年(32)

2011年(87)

分类: Sybase

2014-08-08 15:28:13

    IQ 16.0 SP02之前,LOAD TABLE语句从文本文件中装载数据,文本文件不能是压缩的格式。如果文本文件中包含很多记录的时候,文件会比较大,占用的文件系统空间也多。此外,从IQ 15起支持客户端装载,未压缩的文本文件放在客户端的文件系统中,需要通过网络传递给IQ Server,这样导致网络传递时间长。
    IQ 16.0 SP02起,LOAD TABLE支持从.gzip和.gz文件中直接装载数据,IQ在处理时会自动把.gzip和.gz后缀的文件当成压缩文件,完成解压和数据读取处理。下面结合一个例子,说明具体的用法。
    1. 示例数据库
    示例使用iq 16自带的demo数据库。构建demo数据库的脚本是$IQDIR16/demo/mkiqdemo.sh,执行它既可创建。
    我们使用employees表,该表对应的数据文件为$IQDIR16/demo/demodata/employee.dat
    2. 创建表
    执行如下语句创建employees_1做为load table的目标表
    select * into employees_1 from employees where 1=2
    3. 编写load table脚本load_test.sql
LOAD TABLE employees_1
(
  EmployeeID    '|!'    ,
  ManagerID     '|!'    ,
  Surname       '|!'    ,
  GivenName     '|!'    ,
  DepartmentID  '|!'    ,
  Street        '|!'    ,
  City  '|!'    ,
  State '|!'    ,
  Country       '|!'    ,
  PostalCode    '|!'    ,
  Phone '|!'    ,
  Status        '|!'    ,
  SocialSecurityNumber  '|!'    ,
  Salary        '|!'    ,
  StartDate     '|!'    ,
  TerminationDate       '|!'    ,
  BirthDate     '|!'    ,
  BenefitHealthInsurance        '|!'    ,
  BenefitLifeInsurance  '|!'    ,
  BenefitDayCare        '|!'    ,
  Sex   '|!'
)
FROM '/tmp/employee.dat.gz'
FORMAT ASCII
ESCAPES OFF
QUOTES OFF
NOTIFY 500000
ROW DELIMITED BY '\x0a'
WITH CHECKPOINT ON;
COMMIT;

    4. 准备压缩格式数据文件
    使用IQ Server端export方法,把demo库中的employees表的数据导出到数据文件/tmp/employee.dat中. 脚本(export_test.sql)如下:

set temporary option temp_extract_row_delimiter = '\x0a';
set temporary option temp_extract_column_delimiter = '|!';
set temporary option temp_extract_null_as_empty = 'ON';
set temporary option temp_extract_append = 'OFF';
set temporary option temp_extract_binary = 'OFF';
set temporary option temp_extract_swap = 'OFF';
set temporary option temp_extract_name1 = '/tmp/employee.dat';

select * from employees;

set temporary option temp_extract_name1 = '';

    使用dbisql执行export_test.sql 生成数据文件:dbisql -c "uid=DBA;pwd=sql" -nogui export_test.sql

    gzip employee.dat   #压缩成功后,会形成employee.dat.gz压缩文件.
    cp employee.gz /tmp

    5. 使用dbisql执行load table语句
    dbisql -c "uid=DBA;pwd=sql" -nogui load_test.sql
阅读(2746) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~