informix数据库导出导入过程

2018-12-05 21:04

informix数据库导出导入过程

1. unloadzz.sh dbname导出(为了说明方便,假定导出的数据库名字叫做mysrcdb) 2. 修改dbname/schema/dbname.sql文件中的,这里此值为:mysrcdb/schema/mysrcdb.sql。 (1) 检查用户名是否需要修改(一般在文件头位置),例如:(将netpilot用户名字改为

informix名)

grant dba to \grant dba to \修改为:

grant dba to \grant dba to \

(2) 修改所属的数据库空间名是否需要修改(可以通过关键字” in “来查找(in的前后各带

上一个空格进行查找,要不然太多了),一般是在创建索引或触发器的地方),例如:(将空间名字由原来存放在dldddbs上,改为存放在datadbs1上)

create unique index \

(dd_number,province) using btree in dldddbs ; 修改为:

create unique index \ (dd_number,province) using btree in datadbs1;

(3) 检查创建视图的字段名字中是否存在””(双引号),如果存在,则将其去掉。(可以

通过”create view”关键字来查找)。例如,(将”name”改为name,只需要去掉用来创建字段名字中的双引号,来源中(as select后的信息)的双引号可以不用去掉)

create view \ select x0.id ,x0.\

from \ union select x1.id ,x1.\

,x1.kind ,x1.pro ,x1.city ,x1.county from \ x1 union select x2.id ,x2.\

,x2.county from \ 修改为:

create view \ select x0.id ,x0.\

from \ union select x1.id ,x1.\

,x1.kind ,x1.pro ,x1.city ,x1.county from \ x1 union select x2.id ,x2.\

,x2.county from \

(4) 检查创建触发器字段名字中是否存在””(双引号),如果存在,则将其去掉。(可以

通过”create trigger”关键字来查找)。例如,(将”old”改为old,只需要去掉用来创建字段名字中的双引号,触发操作中(for each row后的信息)的双引号可以不用去掉)

create trigger \ .x_connbox referencing old as \ for each row

(

delete from \ where (connboxid

= \修改为:

create trigger \ .x_connbox referencing old as old for each row (

delete from \ where (connboxid = \

3. 检查当前用户的环境变量中,如下两个环境变量是否正确,如果不正确,请修改到profile

文件中,并使其生效: DB_LOCALE=en_US.819

CLIENT_LOCALE=en_US.819 export DB_LOCALE

export CLIENT_LOCALE

4. 使用dbaccess创建好相应的数据库(注意存放空间名和LOG规则),此步之前一定要确

保前面的第3步正确,否则,很有可能白做了,浪费青春。(为了后面的说明方便此,假定创建的数据库名字为mydstdb)

5. (如果确信第2步没错,可以跳过此步)使用dbaccess检查mysrcdb/schema/mysrcdb.sql

有没有异常,在UNIX命令提示符下,输入命令为:dbaccess mydstdb mysrcdb/schema/mysrcdb.sql

6. 使用loadzz.sh将之前导出并修改好的文件进行数据库导入到第4步创建好的数据库里。 7. 在使用unloadzz.sh和dbaccess和loadzz.sh脚本过程中,请一定要记得日志记录。在每

次执行之后,记得检查日志中是否存在“Error”字样的信息,如果存在,进一步检查,并做相应的重复工作。这一步很重要的,要不然,很有可能要浪费更多的青春了。

unloadzz.sh脚本运行说明:

1. 功能:用来在线导出一个数据库的完整结构和所有的表记录。

2. 参数:dbname,只有一个必选参数,表明将要导出的数据库名字。 3. 前提条件:

(1) 当前运行目录下,不存在与数据库同名的目录。

(2) 当环境变量:DB_LOCALE=en_US.819和CLIENT_LOCALE=en_US.819时,能够

使用dbaccess登陆并打开要导出的数据库。如果不行,请编辑unloadzz.sh中的相应值。(里边有另外一组值为:zh_cn.gb)

4. 在线帮助:运行unloadzz.sh –h或unloadzz.sh –help获取参数说明。 5. 脚本内容: $cat unloadzz.sh #!/bin/sh

if [ $# -ne 1 -o \

echo \ echo \

echo \ echo \ $0 ompdb\ exit fi

dbname=$1

if [ -d $dbname ]; then

echo ERROR!!! There is a dir named \and 'rm -rf $dbname' at first. EXIT ERROR!!! exit fi

mkdir $dbname

mkdir $dbname/record mkdir $dbname/schema mkdir $dbname/tmpdir

DBDATE=Y4MD export DBDATE

# DB_LOCALE=zh_cn.gb

# CLIENT_LOCALE=zh_cn.gb

# DB_LOCALE=EN_US.8859-1

# CLIENT_LOCALE=EN_US.8859-1

DB_LOCALE=en_US.819

CLIENT_LOCALE=en_US.819

export CLIENT_LOCALE export DB_LOCALE

dbschema -d $dbname -ss $dbname/schema/$dbname.sql dbaccess <

select tabname from systables where tabid>99 and partnum>0; !

while read tabstring tabname do

filename=$dbname/record/$tabname

echo Begin unload table: $tabname into file: $filename dbaccess <

database $dbname;

unload to $filename select * from $tabname; !

done < $dbname/tmpdir/tmpfile

rm -rf $dbname/tmpdir echo $0 DONE.

loadzz.sh脚本运行说明:

1. 功能:

(1)用来导入一个完整的数据库表结构和所有的表记录 (2)或只是导入所有的表记录。 2. 参数:

(1) 参数1:dest_DatabaseName,必选参数,表示将要导入的数据库名字。

(2) 参数2:from_DatabaseName,可选参数,表示unloadzz.sh导出的数据库名,当

dest_DatabaseName=from_DatabaseName时,此参数可以不输。

(3) 参数3:loadmode,可选参数,表示导入数据库的模式,可选值为:fulldb和onlyrec。

fulldb表示导入完整的库表结构和表记录,onlyrec表示只导入所有的表记录。缺省值为fulldb。如果只需要导入表记录时,参数1和参数2和参数3必选。 3. 前提条件:

(1)如果用来导入一个完整的数据库表结构和所有的表记录,要求该数据库已经创建好。 (2)如果只是用来导入所有的表记录,要求该数据库已经创建成功并且表结构也已经建好。 (3)只适用于使用unloadzz.sh导出的数据,使用其他工具导出的数据无效。

(4)用dbaccess创建数据库时,缺省要求环境变量DB_LOCALE=en_US.819和CLIENT_LOCALE=en_US.819,否则,请编辑loadzz.sh中的相应值。(里边有另外一组值为:zh_cn.gb)

4. 在线帮助:运行unloadzz.sh –h或unloadzz.sh –help获取参数说明 5. 脚本内容: $cat loadzz.sh #!/bin/sh

if [ $# -lt 1 -o \ echo \

echo \ echo \ 'dest_DatabaseName' is a destination database name\

echo \ 'from_DatabaseName' is a source database name, if it is the same with the destination database name, it can be omitted\

echo \ 'loadmode' means load data mode, it is only can be 'fulldb' or 'onlyrec', the other word will be treat as illegal\

echo \ the default 'loadmode' is 'fulldb', 'fulldb' means load full database, 'onlyrec' means only load all tables records\

echo \ echo \ $0 ompdb\

echo \ $0 ompdb ompdbbak\ echo \ $0 ompdb ompdb\

echo \ $0 ompdb ompdb onlyrec\ exit fi

DBDATE=Y4MD export DBDATE

# DB_LOCALE=zh_cn.gb

# CLIENT_LOCALE=zh_cn.gb

# DB_LOCALE=EN_US.8859-1

# CLIENT_LOCALE=EN_US.8859-1

DB_LOCALE=en_US.819

CLIENT_LOCALE=en_US.819

export CLIENT_LOCALE export DB_LOCALE

if [ $# -eq 1 ]; then dest_dbname=$1 from_dbname=$1 loadmode=fulldb elif [ $# -eq 2 ]; then dest_dbname=$1 from_dbname=$2 loadmode=fulldb elif [ $# -eq 3 ]; then dest_dbname=$1 from_dbname=$2 loadmode=$3 fi

if [ \

if [ ! -d $from_dbname/record -o ! -d $from_dbname/schema ]; then

echo ERROR!!! Not found dir '$from_dbname/record' or '$from_dbname/schema', please check it. EXIT ERROR!!!

exit fi

echo Begin load database schema....

dbaccess $dest_dbname $from_dbname/schema/$from_dbname.sql echo Load database schema END. elif [ \

if [ ! -d $from_dbname/record ]; then

echo ERROR!!! Not found dir '$from_dbname/record', please check it. EXIT ERROR!!! exit fi else

echo ERROR!!! 'loadmode' value error, it is only can be 'fulldb' or 'onlyrec'. EXIT ERROR!!! exit fi

alltablename=`ls $from_dbname/record`

for filename in $alltablename do

echo Begin load $tablename: $filename ... ... dbaccess <

database $dest_dbname;

load from $from_dbname/record/$filename insert into $filename; ! done

echo $0 DONE.


informix数据库导出导入过程.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:管理会计练习题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: