所谓中间库,就是说把从各个业务系统卸载下来的数据(通常是文本),装载到这个中间库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