所谓中间库,就是说把从各个业务系统卸载下来的数据(通常是文本),装载到这个中间库Informix中,然后再然过ETL过程操作,最后装载到数据仓库中。

 

    之所以要采用一个中间库,主要是为了使数据容易维护,因为从各业务系统卸载下来的数据(通常是文本),文本文件是比较难于维护的。还有解决一些乱码问题,Informix这里可以把乱码的数据去除掉。最后一个就是解决文本文件取定长数据的问题,很容易出错,不过这个具体我还是不是很明白。

 

     其实也可以直接使用文本文件,就是说不经过这个中间库,然后需要解决上面说的三个问题。

 

     Informix数据导出,也叫做卸数:unload to fileName.txt select * from tableName

 

    语法比较简单,unload to 后面接导出的文本文件名称,select后面接你所要导出的数据的条件。

    Informix数据导入,也叫做装数:load fileName.txt insert into tableName

    load后面接需要导入的文本文件名称,后面insert into后面接数据表名。

    备份数据库结构

 

    dbschema -d database > database.sql

    -d表示导出整个数据库的表结构,

 

    备份表结构

    dbschema -t tablename >tablename.sql

    dbschema –d database –t tablename > tablename.txt

    -t表示导出某一个数据表的表结构。

 

informix数据库表的导入和导出

 

使用dbaccess工具,选择相应数据库,然后执行SQL语句

导出:

unload to table1.txt select * from table1;  

命令含义为:将table1表格中的数据导入到table1.txt中,此处文件名可以带路径,否则就会被导出到当前目录。

 

导入:

load from table1.txt insert into table1;  

命令含义:

将当前目录下的table1.txt中的内容插入到表格table1中。

 

对于使用unload导出的文件,可以通过编写命令文件的方式,批量的插入到数据库中。

例如导出三个文件 table1.txt,table2.txt,table3.txt  

可以编写下面的命令文件,不妨命名为load.txt  

内容如下

FILE table1.txt DELIMITER '|' 3;(此处的数字为表各中对应的字段数目)  

INSERT INTO table1;  

FILE table2.txt DELIMITER '|' 3;(此处的数字为表各中对应的字段数目)  

INSERT INTO table2;  

FILE table3.txt DELIMITER '|' 3;(此处的数字为表各中对应的字段数目)  

INSERT INTO table3;  

 

生成好了这个命令文件,则可以通过输入如下的dbload命令批量的导入三个表格数据:

首先进入到导入文件所在的目录,例如 c:\bak  

dbload -d test(数据库名字) -c c:\bak\load.txt -l aaa(随便输入的日志名字) 即可以将三个文件对应的数据导入到指定的表格中

 

Informix-dbexport用法


Usage:

dbexport <database> [-X] [-c] [-q] [-d] [-ss]

[{ -o <dir> | -t <tapedev> -b <blksz> -s <tapesz>[-f <sql-command-file>] }]

NOTE: arguments to dbexport are order independent.


参数详解:

 -X  如果某个字符串字段中包含二进制数据,加上该参数后,dbexport将重新组织这些数据。

 -c  除非很严重的错误dbexport才中断,这些错误如下:

        不能打开你指定的磁带设备;

不能写磁带设备或文件;

不正确的命令行参数;

不能打开数据库或没有连接数据库的权限;

 -q  不用将导出过程输出到屏幕上

 -d  让dbexport只导出BLOB字段的描述符,而不导出BLOB数据

 -ss 能够生成更详细的信息,比如:

        初始和附加extent的尺寸;

表的分片信息;

对表的锁的模式(行锁或页锁);

表所在的dbspace或BLOB数据所在的space;

 -o <dir>  

     可以将数据库导入到你指定的目录下

 -t <tapedev> -b <blksz> -s <tapesz>

     将数据导入到磁带

 -f <sql-command-file>

     dbexport在导出数据的同时会产生一个DDL的文件,你可以指定一个绝对路径的文件



     例:

1) 将数据库stores导出到当前目录下

$>dbexport stores

2) 将数据库stores导出到当前目录下,不将过程输出到屏幕,并且忽略小错

$>dbexport stores -q -c

3) 将数据库stores导出到指定目录下

$>dbexport stores -q -c -o /tmp


4 )将数据库 stores 导出到磁带上

$>dbexport stores -t /dev/tape -b 2048 -s 2000000 -f /tmp

5) 将数据库 stores 导出前目录下 , 并且加上额外的信息

$>dbexport stores -ss