外部表是Informix一个数据导入和导出的利器,效率奇高。
但是使用起来是有方法和要求的,不是随随便便就可以效率奇高的。具体的要求如下:
1、裸表;
2、表上无索引或主键;
3、分片表,不能带有with rowid关键字;
4、启用PDQ;
5、启用light append或light scan;
6、合理的强制检查点(减少物理日志和逻辑日志);
导出数据具体的使用方法如下:
create external table ext_${tab} sameas ${tab}
using
(datafiles("DISK:/home/informix/50w/${tab}/${tab}%r(1..5).tbl"),
format "delimited",
DELIMITER '|',
express,
rejectfile "/tmp/${db}/${tab}.err",
maxerrors 10
);
set pdqpriority 100;
set environment IFX_BATCHEDREAD_TABLE '1';
insert into ext_${tab} select * from ${tab};
drop table ext_${tab};
导入数据具体的使用方法如下:
create external table ${tab}_ext sameas ${tab}
using
(datafiles("DISK:/home/informix/test/tpch/test_1G/t%r(1..20).unl"),
format "delimited",
DELIMITER ",",
express,
rejectfile "/tmp/${tab}.err",
maxerrors 10000
);
alter table ${tab} type(raw);
onmode -c
dbaccess -e -m ${db}<< !
set pdqpriority 100;
set environment IFX_BATCHEDREAD_TABLE '1';
insert into ${tab} select * from ${tab}_ext;
alter table ${tab} type(standard);
drop table ${tab}_ext;
!