informix数据库导入导出
- 格式:doc
- 大小:32.00 KB
- 文档页数:3
INFORMIX的dbexport和dbimport使用示例说明INFORMIX-IDS数据库进行迁移中,我们在进行数据级别的迁移时,采用dbexport,dbimport来完成。
dbexport导出数据库中所有对象的模式脚本和表数据文件,该模式脚本中包含有表等的创建脚本,同时包含了导出的表的对于数据文件的信息。
dbimport根据模式脚本进行导入,导入过程首先根据模式脚本创建对象,如何导入相应的数据,导入数据过程类似load过程。
如要加速导入,可以首先将数据库的日志模式选择为nolog模式。
导入完成后进行日志模式的改变即可。
以下说明如何使用dbexport和dbimport进行IDS的数据库的数据级别的迁移。
1、导出,首先创建导出一个目录,示例中在/db/目录下创建sunguorong的一个文件夹dbexport dbname -c -ss -o /db/sunguorong2、导出完成后,在sunguorong目录下生成一个dbname.exp的目录,找到该目录下的dbname.sql模式脚本文件,需要利用工具(如sqleditor)来验证一下脚本的语法的正确性(导出的脚本可能存在语法上的错误),需要加以修改纠正。
3、导入,在导入之前,需要按照存储情况先划分好DBSPACEdbimport dbname -i /db/sunguorong dbname -c -l buffered -ddefault_dbspacename4、导入完成后,进行数据库级别的统计更新update statistics ;【补充资料(一)】dbexportdbexport实用程序将数据库卸出到ASCII文件或磁带。
dbimport实用程序使用dbexport产生的模式文件和数据重建数据库。
用户可以通过编辑模式文件来修改由dbimport生成的数据库模式。
dbexport实用程序的语法:-c指示如果没有致命错误,则输出全部信息。
Infoxmix命令语法总结:1)导出数据库中所有的表结构到文件db.sql$>dbschema -d your_database -t all db.sql2)导出数据库中所有的存储过程到文件db.sql$>dbschema -d your_database -f all db.sql3)导出数据库中的所有对象(包含表,存储过程,触发器。
)到文件db.sql $>dbschema -d your_database db.sql4)导出数据库中一个表的结构到文件db.sql$>dbschema -d your_database_name -t your_table_name db.sql5)导出一个存储过程定义到文件db.sql$>dbschema -d your_database_name -f your_procedure_name db.sql6)如果导出更多的表的信息(EXTENT...)$>dbschema -d your_database_name -ss db.sql7)导出数据库中对用户或角色的授权信息$>dbschema -d your_database_name -p all$>dbschema -d your_database_name -r all8)导出数据库中的同义词$>dbschema -d your_database_name -s all9)导出数据库中的Sequence。
$>dbschema -d payment -seq all cre_seq.sql10)导出表中所有数据$>unload to xxx.txt select * from tablename;11)导入数据到表中$>load from xxx.txt insert into tablename;。
Informix迁移工具1. 前沿总体上说,数据库迁移主要分为二进制迁移和文本迁移2. 二进制迁移二进制迁移使用的工具是ontape、on-bar、onunload等。
2.1 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE目标数据库版本:IBM Informix Dynamic Server Version 11.70.FC3DE数据库名:test表名:testtable表中记录:1972124条数据2.2 迁移步骤设置备份路径✓将onconfig文件中的TAPEDEV和LTAPEDEV的路径分别设置为/home/Informix/tapedev、/home/Informix/ltapedev在源服务器上制作最终的0级备份✓ontape –s –L 0使源数据库服务器脱机✓onmode –ky将备份文件、onconfig、sqlhost以及环境变量的setenv1170文件均拷贝到目标服务器的相应位置(注意更改sqlhost文件中的ip地址栏位)在目标服务器上安装IDS软件在目标服务器上的相应位置建立与源数据库服务器相同的chunk文件并更改权限在目标服务器上使用ontape –r命令恢复数据恢复完毕之后,目标服务器自动启动到静默模式,更改使其进入联机模式 制作目标服务器的最初0级备份3. 文本迁移在数据库之间迁移,即将数据移动到不同操作系统上的数据库服务器中3.1 文本迁移中移动数据可以使用的传输工具和实用程序-dbexport和dbimport-onload和onunload-load和unload-dbload-external table-high performance loader(HPL)这些工具有各自的优点和限制。
综合考虑所有因素,选择适合环境的工具或实用程序3.2 迁移环境源数据库版本:IBM Informix Dynamic Server Version 11.50UC5目标数据库版本:IBM Informix Dynamic Server Version 11.70UC5数据库名:test表名:testtable表中记录:1972124条数据3.2 文本迁移的步骤使用on-bar on-archive或ontape来制作最终的0级备份(可选)请选择以下某一迁移实用程序集来卸载数据库:Dbexport和dbimportUnload、dbschema和loadUnload、dbschema和dbload安装并配置目标数据库服务器。
informix数据库常用备份方法informix数据库常用备份方法数据库导出dbexport和导入dbimport说明:dbexport用户导出和备份数据库,dbimport用于恢复dbexport备份的数据库;注意:dbimport导入数据库是,会创建数据库,所以不能存在与要导入重名的数据库。
利用dbexport 备份数据库时有个缺点就是要把所有和数据库操作相关的应用都要停止,而0级备份则不需要停应用。
假如我的数据库为:test_dbdbexport用法:[informix] /opt/informix/db_back>dbexport --Invalid option list.Usage:dbexport <database> [-X] [-c] [-q] [-d] [-ss [-si]][{ -o <dir> | -t <tapedev> -b <blksz> -s <tapesz> [-f <sql-command-file>] }]NOTE: arguments to dbexport are order independent.Dbexport执行后,产生一个文件dbexport.out和一个文件夹test_db.exp[里面是unl文件]如果想备份数据库以及其中的数据:[informix] /opt/informix /db_back>dbexport test_db[informix] /opt/informix /db_back>lsdbexport.out test_db.exp/dbimport用法:[informix] /opt/informix >dbimport --Invalid option list.Usage:dbimport <database> [-X] [-c] [-q] [-d <dbspace>][-l [{ buffered | <log-file> }] [-ansi]][{ -i <dir> | -t <tapedev> [ -b <blksz> -s <tapesz> ] [-f <script-file>] }]NOTE: <log-file> must be a complete patharguments to dbimport are order independent执行下面命令恢复数据库:[informix] /opt/informix/db_back>dbimport test_db -d workdbs -l bufferedFAQ1:dbimport导入数据失败错误现象如果导入的时候直接执行dbimport test_db这样的话,从建数据库后,就会出现如下错误(原因是直接恢复后,数据库日志级别不是buffer log这样就会出现下面的错误,利用-d指定恢复到哪个数据库空间,不指定的话,默认是rootdbs):[16:45:47]Error: Transaction begin failed.sqlca.sqlcode = -256[16:45:47]Error: Connect to database[evcscp_db@smp4_online_net]failed, sqlcode=-256或是:14:59:07,560 WARN [TransactionImpl] XAException: tx=TransactionImpl:XidImpl [FormatId=257, GlobalId=smp4//1, BranchQual=] errorCode=XA_UNKNOWN(0)org.jboss.resource.connectionmanager.JBossLocalXAException: Error trying to start local tx: ; - nested throwable: (org.jboss.resource.JBossResourceException: SQLException; - nested throwable:(java.sql.SQLException: Transactions not supported))解决方法方法1:导入数据库的时候,就直接指定日志类别-l buffered;方法2:通过ontape –s –B test_db –L 0 修改日志级别为buffer log;FAQ2:dbimport导入如果存在同名的数据库则会失败错误现象[informix] /opt/informix /db_back_01>dbimport test_db*** create database330 - Cannot create or rename database.100 - ISAM error: duplicate value for a record with unique key.解决方法利用informix用户登录删除该重名数据库FAQ3:dbexport导出数据库失败错误现象[informix] /opt/informix /db_back_01>dbexport test_db-425 - Database is currently opened by another user.-107 - ISAM error: record is locked.解决方法:停止所有和test_db数据库相关的应用,如果还出现上面的问题,就使用informix用户登录,查看连接该数据库的session,然后强制停止。
1、在数据库新建一个表
1)在左边对象里选中“表”。
点上面“新建”选项。
2)出现一个对话框。
选“导入表”。
点“确定”。
3)出现对话框,选你要导入有Excel表。
4)导入后会出现“导入数据表向导”。
(1)选中“显示工作表”点“下一步”。
(2)选中“第一行包含列标题”点“下一步”。
(3)选中“新表中”点“下一步”。
(4)“下一步”。
(5)选中“不要主键”,点“下一步”
(6)“导入到表:”改表名,点完成。
5)左边“对象”选中“报表”,在右边点“”。
(1)在“表/查询”下选要导出的表名。
将下面“可用字段”里的选项。
按导出顺序依次选入“选定的字段”里,点“下一步”。
(2)点“下一步”,到报表布局方式,在“布局里”选“纵栏表”,方向选“纵向”。
点下一步。
(3)点“下一步”,选“修改报表设计”,点完成。
6)完成创建报表后会弹出报表修改的对话框。
(1)先删除页眉页脚。
(在表格处单击鼠标右键,点页眉页脚就可以删除。
)
(2)只留“主体”。
将主体中的字段调整到导出字段的大小,关闭报表保存。
7)选中报表,在工具栏里找到导出选择用WDRD导出。
(2)导出WORD后保存。
Informix数据库1、备份表结构Dbschema -d dbname -t all -ss(1)导出数据库中所有的表结构到文件db.sql$>dbschema -d your_database -t all db.sql(2)导出数据库中所有的存储过程到文件db.sql$>dbschema -d your_database -f all db.sql(3)导出数据库中的所有对象(包含表,存储过程,触发器。
)到文件db.sql$>dbschema -d your_database db.sql(4)导出数据库中一个表的结构到文件db.sql$>dbschema -d your_database_name -t your_table_name db.sql(5)导出一个存储过程定义到文件db.sql$>dbschema -d your_database_name -f your_procedure_name db.sql(6)如果导出更多的表的信息(EXTENT...)$>dbschema -d your_database_name -ss db.sql(7)导出数据库中对用户或角色的授权信息$>dbschema -d your_database_name -p all$>dbschema -d your_database_name -r all(8)导出数据库中的同义词$>dbschema -d your_database_name -s all(9)导出数据库中数据unload to *.txt select * from table_name where ...Informix-Online数据库因其具有高性能、高可靠性、支持数据完整性定义/检查等特性而得到广泛应用。
Informix-Online数据库常用的三种数据备份方式:a. 使用ontape工具进行数据备份b. 使用dbexport命令进行数据备份c. 使用Onunload命令进行数据备份一.目的与优缺点「数据库系统」可说是一个企业的心脏,许多承先启后的宝贵数据,存放在数据库中。
数据库导入与导出的方法与注意事项数据库是存储和管理数据的重要工具之一,对于使用数据库的人来说,数据库导入和导出是一项基本操作。
数据库导入和导出功能允许用户将数据从一个数据库迁移到另一个数据库,或从数据库导出到其他应用程序进行处理。
在进行数据库导入和导出时,有一些方法和注意事项需要我们了解和掌握。
一、数据库导出方法与注意事项1. 选择导出格式:数据库导出的格式通常有多种选择,如CSV、SQL脚本、Excel等。
根据自己的需求选择合适的导出格式,确保导出的数据可以被其他应用程序正确读取和处理。
2. 导出选定的表或整个数据库:在进行数据库导出前,需要明确导出的范围是选定的某些表还是整个数据库。
如果只需要导出部分数据,可以选择需要导出的表并进行设置。
3. 导出数据的筛选:在某些情况下,我们只需要导出符合一定条件的数据。
数据库导出功能通常提供了筛选条件的设置,可以根据自己的需求设定导出数据的筛选条件。
4. 导出数据的分隔符和字符编码:导出数据时,需要选择合适的分隔符,以便数据可以被其他应用程序正确分隔。
同时,选择正确的字符编码也是保证导出数据正确性的重要一步。
5. 导出数据的顺序:某些情况下,我们需要按照特定的顺序导出数据。
在数据库导出功能中,通常提供了数据排序的选项,可以根据自己的需求设置导出数据的顺序。
6. 导出数据的频率和定时导出:有些场景需要定时导出数据库数据,以备份数据或进行其他操作。
数据库导出功能通常提供了定时导出的选项,可以根据需求设定导出数据的频率和时间。
7. 导出完成后的数据校验:导出数据后,应该进行数据校验以确保导出的数据完整和准确。
通常可以通过对比导出前和导出后的数据进行比对,或者通过其他检验手段进行数据校验。
二、数据库导入方法与注意事项1. 选择导入数据的格式:与数据库导出相对应,数据库导入时也需要选择合适的数据格式。
导入数据的格式需与导出数据的格式相匹配,确保数据的一致性和正确性。
informix_online数据库三种备份方法的选择第一篇:informix_online数据库三种备份方法的选择【IT168 服务器学院】INFORMIX-ONLINE数据库因其具有高性能、高可靠性、支持数据完整性定义和检查等特性而被广泛应用。
数据库被使用后,数据备份的安全可靠性便成为人们普遍关注的问题。
下面根据笔者多年的学习和使用经验,对INFORMIX-ONLINE数据库常用的三种数据备份方式加以归纳和比较。
一、使用ontape工具进行数据备份1.ontape工具的功能ontape工具具有如下功能:备份和恢复ONLINE数据、备份和恢复逻辑日志、改变数据库日志状态等。
在此着重介绍数据备份功能。
2.执行ontape备份数据的语法ontape备份语法为:ontape -s -L 备份级别(0、1、2)在ONLINE处于联机或静止方式时,informix用户或具有DBA权限的用户可以通过执行上面的命令进行备份。
根据备份方案安排进行0级、1级、2级备份。
0级备份是对整个数据库的所有数据进行完整备份,1级备份是只对0级备份以后修改过的数据进行备份,2级备份只是对1级备份以后修改过的数据进行备份。
3.需要注意的问题(1)在执行ontape备份前要对ONCONFIG文件中的TAPEDEV、TAPEBLK、TAPESIZE参数进行正确的设置。
(2)为了缩短数据恢复时间,应以进行0级为主,尽量减少1级和2级备份。
对银行等重要部门数据,应每天进行0级备份。
(3)如果需要将ontape备份的数据恢复到另一台服务器上时,要求两台服务器机型、操作系统、ONCONFIG配置文件及非临时分配的dbspace磁盘空间数量和大小必须一致,否则数据不能正常恢复。
(4)必须保证有足够可用的逻辑日志文件。
如果剩余的逻辑日志空间小于单个逻辑日志的50%,INFORMIX-ONLINE将拒绝执行备份操作,必须先备份已使用过的逻辑日志,然后才能进行数据备份。
所谓中间库,就是说把从各个业务系统卸载下来的数据(通常是文本),装载到这个中间库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。