informix 数据库及数据表导入导出操作

一、.数据库的导入

1. 在dbaccess工具环境环境下建立数据库(如:gdxy)

注意:此步操作一定不要直接在dbvis工具上建立,否则后期的脚步总是运行报错,因为在命令行环境下建的数据库里面会有设置数据库的临时空间和log文件。

2.开始导入建表的sql脚步(如:createtab.sql)

在dbaccess工具环境下直接输入 dbaccess gdxy < createtab.sql

3.导入表中的数据(通常导出时为txt格式)

一:对于单个表格,可以采用在dbaccess工具环境直接输入:load from table1.txt insert into table1;

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

法一、

第一步:
内容如下
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(随便输入的日志名字)
即可以将三个文件对应的数据导入到指定的表格中

法二:

第一步:编写导入脚步(load.sql)

load from table1.txt DELIMITER '|' INSERT INTO table1;
load from table2.txt DELIMITER '|' INSERT INTO table2;

第二步:

在dbaccess工具环境下直接输入 dbaccess gdxy < load.sql、

二、数据库的导出
1、单个表格导出:unload to fileName.txt select * from tableName

三、导入导出操作

备份表结构

dbschema -d database > database.sql

dbschema -t tablename -d >tablename.sql

-d表示导出整个数据库的表结构,-t表示导出某一个数据表的表结构。

导出数据库 dbexport:


dbexport在使用前必须保证该数据库未被别人打开。
在实际环境中,因为很多业务正在运行,应用程序的连接尚未断开,所以不能直接运行dbexport 。
我一般使用 onmode -ky 关闭数据库,然后再用 oninit 启动数据库,立即执行 dbexport 数据名,即可将数据导入。
假设数据库名为 test ,导出完成后,可以看见 dbexport.out 的日志文件和一个 test.exp 文件夹,这个文件夹里即包含了test 这个库的建库脚本和所有的数据文件。

导入数据库 dbimport:

导出来的数据拷贝到测试环境中,注意,如果只拷贝文件过来,dbimport 是不认识的,
我们需要建立一个刚才那样的文件夹即 test.exp ,
然后在这个子目录的上层运行 dbimport ,才能将数据导入。
命令很简单,只需执行 dbimport test 即可。
此时要保证你的数据库中没有 test 这个库,如果这个库存在,运行 dbimport 会导致失败。

倒库之后没日志文件

  运行 dbimport 后,库倒是建起来了,可是日志文件没有了。这是因为 dbexport 将会导致数据库的日志模式丢失,不用担心,我们可以用 ontape 这个命令来解决,具体步骤如下:

  a. 修改配置文件,在 $INFORMIXDIR/etc/onconfig 文件里,将 TAPEDEV 设置为 /dev/console ,然后重启数据库(我是执行onmode -ky 和 oninit 命令)

  b. 运行 ondblog buf test 这个命令意思是先打上一个标志。将数据库日志设置为 buffer 模式。

  c. 运行 ontape -s -L 0 test 即可,在转换数据库模式前,必须先做一个0级备份。

  d. 好了,重启数据库,看看数据库日志模式已经改过来了。另外,还有一个 onmonitor 命令,也是相当的有用,命令记不得,就可以用这个东西来实现。

你可能感兴趣的:(informix 数据库及数据表导入导出操作)