db2导入导出常用命令
- 格式:docx
- 大小:17.85 KB
- 文档页数:3
文档编号:DB2数据导入导出及建库步骤2013年3月关于本文档说明:类型-创建(C)、修改(U)、删除(D)、增加(A);目录关于本文档 (2)DB2 数据导入导出及建库步骤 (4)一、数据库数据的导出 (4)二、编辑导出的数据 (4)三、数据库的创建 (5)四、数据库数据的导入 (5)五、数据库数据的备份与还原 (5)DB2 数据导入导出及建库步骤【说明:LISG为已有数据库,LISG为想要创建的数据库。
】一、数据库数据的导出1、启动DB2服务本地:db2cmd 远程:telnet2、连接数据库db2 connect to LISG user db2inst1 using db2adm273、重启数据库,断开所有连接db2stop forcedb2start4、导出表结构及函数db2look -d LISG-a -e -x -o 20130309.sql -i db2inst1 -w db2adm275、导出基础数据(需指定文件夹目录cd /home/db2inst1/20130309 )db2move LISG export -u db2inst1 -p db2adm27二、编辑导出的数据1、基础数据打tar包命令:进入上级目录,执行“tar -tvf 20130309.tar20130309 ”;2、将导出的建表语句、基础数据放到指定路径下,编辑导出的20130307.sql文件,按照“表结构\视图\函数\存储\RISKAMNT函数”排序。
去掉所有的双引号,更换表与函数的前缀名为想要用的用户名(如“DB2INST1”),去掉开头的connect 并且把所有存在blob字段的表空间(即create语句的IN 后面的表空间)改成新建pagesize 32 K 的表空间(LISG);3、将所有的创建function语句剪切到另一个function.sql文件中去(直接创建function可能会失败);4、编辑db2move.lst文件,将双引号去掉,更换前缀名为想要用的用户名(如“DB2INST1”);三、数据库的创建1、新建数据库LISGdb2 create database LISG using codeset utf-8 territory cn2、查看库信息db2 get db cfg for LISG3、创建缓冲池(连接到LISG后为LISG创建一个pagesize 为32k的缓冲池)db2 connect to LISG user db2inst1 using db2adm27db2 create bufferpool LISGBF immediate size 1000 pagesize 32K4、创建三个表空间,使用刚才建立的缓冲池,使用D:\DB2\LISG处的容器(自动新建)常规表空间:db2 create regular tablespace LISG pagesize 32K managed by system using ('D:\DB2\ LISG) bufferpool LISGBF系统临时表空间:db2 create system temporary tablespace LISG1 pagesize 32K managed by system using ('D:\DB2\ LISG1) bufferpool LISGBF用户临时表空间:db2 create user temporary tablespace LISG2 pagesize 32K managed by system using ('D:\DB2\ LISG2) bufferpool LISGBF四、数据库数据的导入1、连接数据库db2 connect to LISG user db2inst1 using db2adm272、导入表结构db2 –tvf 20130309.sql3、导入函数db2 –tvf function.sql4、导入基础数据db2move LISG load -u db2inst1 -p db2adm27五、数据库数据的备份与还原(一)数据库数据备份1、重启数据库,断开所有连接db2stop forcedb2start2、备份数据库db2 backup database LISG to ‘指定目录’(二)数据库数据还原(备注:当在同一台主机上还原一个新的数据库时产生容器共享冲突)1、重启数据库,断开所有连接db2stop forcedb2start2、删除数据库db2 drop database LISG3、重建数据库LISGdb2 create database LISG using codeset utf-8 territory cn4、查看库信息db2 get db cfg for LISG5、创建缓冲池(连接到LISG后为LISG创建一个pagesize 为32k的缓冲池)db2 connect to LISG user db2inst1 using db2adm27db2 create bufferpool LISGBF immediate size 1000 pagesize 32K6、创建三个表空间,使用刚才建立的缓冲池,使用D:\DB2\LISG处的容器(自动新建)db2 create regular tablespace LISG pagesize 32K managed by system using (/home/db2inst1/LISG/ LISG’)bufferpool LISGBFdb2 create system temporary tablespace LISG1 pagesize 32K managed by system using ('D:\DB2\ LISG1') bufferpool LISGBFdb2 create user temporary tablespace LISG2 pagesize 32K managed by system using ('D:\DB2\ LISG2') bufferpool LISGBF7、还原数据库【说明:备份的数据库(olddb) 与要还原的数据(newdb)名不相同: db2 restore db olddb into newdb 】db2 restore database LISG into LISG(from C:\Documents and Settings\Administrator)友情提示:范文可能无法思考和涵盖全面,供参考!最好找专业人士起草或审核后使用,感谢您的下载!。
本文件为您介绍DB2数据库中表结构的导入和导出的两种常用方法,供您参考选择,希望能够对您有所帮助。
方法一在控制中心的对象视图窗口中,选择所要导出表结构的数据表,按住Ctrl或Shift可多选,单击鼠标右键,选择->生成DDL即可。
方法二◆第一步:打开DB2的命令行工具,在DB2安装目录的BIN文件夹下新建一个文件夹data,并且进入该目录。
创建该目录: mkdir data进入该目录: cd data◆第二步:导出表结构,命令行如下:db2look -d dbname -e -a -x -i username -w password -o ddlfile.sql执行成功之后,你会在刚才新建的文件夹下找到该sql文件。
◆第三步:导出数据,命令行如下:db2move databasename export -u username -p password至此,导出数据结束。
2导出表中数据export to [path(例:D:"TABLE1.ixf)] of ixf select [字段(例: * or col1,col2,col3)] from TABLE1;export to [path(例:D:"TABLE1.del)] of del select [字段(例: * or col1,col2,col3)] from TABLE1;导入表的数据import from [path(例:D:"TABLE1.ixf)] of ixf insert into TABLE1;load from [path(例:D:"TABLE1.ixf)] of ixf insert into TABLE1;load from [path(例:D:"TABLE1.ixf)] of ixf replace into TABLE1; // 装入数据前,先删除已存在记录load from [path(例:D:"TABLE1.ixf)] of ixf restart into TABLE1; // 当装入失败时,重新执行,并记录导出结果和错误信息import from [path(例:D:"TABLE1.ixf)] of ixf savecount 1000 messages [path(例:D:"msg.txt)] insert into TABLE1;// 其中,savecount表示完成每1000条操作,记录一次.存在自增长字段的数据导入:load from [path(例:D:"TABLE1.ixf)] of ixf modified by identityignore insert into TABLE1;// 加入modified by identityignore.解除装入数据时,发生的检查挂起:SET INTEGRITY FOR TABLE1 CHECK IMMEDIATE UNCHECKED;命令只对数据通过约束检查的表有效,如果执行还不能解除,有必要检查数据的完整性,是否不符合约束条件,并试图重新整理数据,再执行装入操作.另外,对load和import,字面上的区别是:装入和导入,但仍未理解两者之间的区别.只是性能上load显然优于import.(load 需要更多的权限)。
db2 常用命令db2 常用命令1. db2 "get dbm cfg" ——获取当前数据库配置信息。
2. db2 list db directory ——列出数据库的目录。
3. db2 list node directory ——列出节点的目录。
4. db2 "start database <dbname>" ——启动指定的数据库。
5. db2 "stop database <dbname>" ——停止指定的数据库。
6. db2 "connect to <dbname>" ——连接到指定的数据库。
7. db2 "update dbm cfg using max application <number>" ——修改数据库最大连接数。
8. db2 list active databases ——列出所有活动的数据库。
9. db2 get snapshot for dynamic sql on <database> ——列出动态SQL的快照。
10. db2 terminate ——立即终止当前会话。
11. db2 "create database <dbname>" ——创建新的数据库。
12. db2 connect reset ——重置数据库连接。
13. db2 "list tables" ——列出表格列表。
14. db2 "describe table <tablename>" ——查看表格结构。
15. db2 "select * from <tablename>" ——查询指定表格的信息。
16. db2 "drop table <tablename>" ——删除指定的表格。
DB2导出表结构、表数据小结2010/12/5一、DB2命令行导出数据库全库表结构①Win+R进入到DB2安装目录的BIN目录下,执行命令:DB2CMD,进入到DB2 CLP窗口。
命令:DB2CMD②创建一个data文件夹命令:MKDIR data说明:将数据库全表结构的SQL语句导出到data目录下③进入到data目录命令:CD data④导出数据库全表结构命令:DB2LOOK –D DATABASE_NAME–E –A – I USER_NAME–W P ASSWORD–O DB_DLL.sql说明:DATABASE_NAME —数据库名称USER_NAME —登录数据库用户名PASSWORD —登录数据库用户密码DB_DLL.sql —数据库全表SQL脚本文件二、DB2命令行导出数据库全库数据①执行命令,导出数据命令:DB2MOVE DATABASE_NAME EXPORT –u USER_NAME–p P ASSWORD说明:DATABASE_NAME —数据库名称USER_NAME —登录数据库用户名PASSWORD —登录数据库用户密码DB_DLL.sql —数据库全表SQL脚本文件提示:-u,-p必须是小写三、DB2命令行导出数据库单个表数据①执行命令,导出单表数据命令:DB2 EXPORT TO [path(eg..D:/TABLE_NAME.IXF)] OF IXF SELECT [字段(eg.. * or col1,col2,……coln)] FROM TABLE_NAME;说明:导出文件格式A:DEL (delimited ASCII format);B:WSF (work sheetformat);C:IXF (integrated exchange format, PC version)四、DB2命令行导入表数据①执行命令导入表数据命令:DB2 IMPORT FORM [path(eg..D:/TABLE_NAME.IXF)] OF IXF INSERTINTO TABLE_NAME;DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF INSERT INTOTABLE_NAME;DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF REPLACE INTOTABLE_NAME;//当装载数据前,先删除已存在的记录DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF RESTART INTOTABLE_NAME;//当装载失败时,重新执行,并极力导出结果和错误信息DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF RESTART INTOTABLE_NAME;//在存在自增长字段的数据导入DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF MODIFIED BYIDENTIEYIGORN INSERT TO TABLE_NAME;解除装入数据时,发生的检查挂起:SET INTEGRITY FOR TABLE1 CHECK IMMEDIATE UNCHECKED;说明:命令只对数据通过约束检查的表有效,如果执行还不能解除,有必要检查数据的完整性,是否不符合约束条件,并试图重新整理数据,再执行装入操作.db2 相关命令(db2look 和 move)以及相关SQL操作关键字: db2look move1、导出到一个文件获得sql语句db2look -d cqyancao -e -o db.sql -i db2user -w psw数据库名要出文件名用户名密码示例: db2look -d DEPARTMENT -u walid -e -o db2look.sql-- 这将生成由用户 WALID 创建的所有表和联合对象的 DDL 语句-- db2look 输出被发送到名为 db2look.sql 的文件中示例: db2look -d DEPARTMENT -z myscm1 -e -o db2look.sql-- 这将为模式名为 MYSCM1 的所有表生成 DDL 语句-- 还将生成 $USER 创建的所有联合对象的 DDL。
1、数据操作语言(DML:select,delete,insert,update)<1>查询数据库目录:db2 list db directory<2>查询数据库中表db2 list tables 当前用户db2 list tables for all 所有表db2 list tables for schema schemaname 指定模式的表<3>显示表结构db2 describe table tablename<4>插入数据db2 insert into tablename(字段名,字段名...) values (与字段名一一对应的值)db2 insert into tablename1(字段1,字段2,字段3...)select 字段1,字段2,字段3...from tablename2 + 查询条件<5>更改表或视图数据db2 update tablename/viewname set 字段名1='',字段2='',...+查询条件<6>删除数据db2 delete from tablename where + 条件<7>导入数据db2 "import from E:\name.txt of del insert into tableName" db2 "import from E:\name.ixf of ixf commitcount 5000 insert /create/replace into tableName"db2 "load client from D:\xx.txt of del insert/replace into tabName"(不需要写日志,但插入前表必须存在;不能create table)db2 "load client from D:\xx.txt of del restart/terminate into tabName" 当导入数据出现问题被强行中断时,此表会被加锁,通过此命令可以解锁<8>导出数据db2 "export to E:\name.txt of del select * from tableName" db2 "export to E:\name.txt of del MODIFIED BY NOCHARDEL select * from tableName"(导出不带分号的数据)导出表结构和数据db2 "export to E:\name.ixf of ixf MODIFIED BY NOCHARDEL select * from tableName"db2 "export to E:\name.ixf of ixf MODIFIED BY NOCHARDEL select * from tableName fetch first (取数+UNM) rows only"(取固定条数) 导出表结构db2look -d dbName -e -t tableName -o D:\xxx.sql(path) -i userName -w passworddb2look -d dbName -z tabSchema -e -c -i userName -w password -o + 路径名导出存储过程结构db2 "export to xxx.sql of del select text fromsyscat.procedures where procname='大写存储过程名'"<9>查询表状态db2 load query table + tableName<10>查询当前表数据量(数据入库时)db2 select count(1) from tab with ur<11>修改当前表名、模式名db2 rename table tab1 to tab22、数据定义语言(DDL:create,alter)<1>创建或删除实例db2icrt instance_name/db2idrop -f instance_namelinux:db2icrt -u user_id instance_name<2>创建视图、表、模式db2 create view/table/schema创建指定用户的模式db2 create schema schName AUTHORIZATION userNamedb2 create schema AUTHORIZATION userName(没有指定模式名时,模式名隐含为用户名userName)定义含有缺省值的表db2 create table tableName(column1 数据类型,column2 数据类型default '缺省值')基于已存在的表db2 create table clone_tablename like tablenamedb2 create table clone_tablename as (select * from tablename) definition only创建物化查询表(MQT)create table new_table_name as (select * from table_name) data initially deferred refresh deferred;refresh table new_table_name;注意:物化表类似一个查询,没有真正形成表,类型显示为Query。
db2常用命令大全EXPORT TO D:\PRINTXML.IXF OF IXF近一年来在项目开发中使用到了IBM的DB2 9.1的数据库产品,跟Oracle相比一些命令有很大的区别,而它最大的功能是支持xml存储、检索机制,通过XPath进行解析操作,使开发人员免于对xml文件在应用进行解析处理,先对其常用命令进行一下汇总,以免遗忘。
注意:在执行如下命令时,需要首先安装db2客户端并通过在运行中输入db2cmd进行初始化一、基础篇1、db2 connect to <数据库名> --连接到本地数据库名db2 connect to <数据库名> user <用户名> using <密码> --连接到远端数据库2、 db2 force application all --强迫所有应用断开数据库连接3、db2 backup db db2name<数据库名称> --备份整个数据库数据db2 restore db <db2name> --还原数据库4、db2 list application --查看所有连接(需要连接到具体数据库才能查看)5、db2start --启动数据库db2stop --停止数据库6、create database <数据库名> using codeset utf-8 territory CN --创建数据库使用utf-8编码7、db2 catalog 命令db2 catalog tcpip node <接点名称> remote <远程数据库地址> server <端口号> --把远程数据库映射到本地接点一般为50000db2 catalog db <远程数据库名称> as <接点名称> at node PUB11 --远程数据库名称到本地接点db2 CONNECT TO <接点名称> user <用户名> using <密码> --连接本地接点访问远程数据库8、数据库导出db2look -d <数据库名> -u <用户> -e -o <脚本名称>.sql --导出数据库的表结构,其中用户空间一般为db2admin/db2inst1db2look -d <数据库名> -u <用户> -t <表1> <表2> -e -o <脚本名称>.sql --导出数据库中表1和表2的表结构db2move <数据库名> export --导出数据库数据db2move <数据库名> export -tn <表1>,<表2> --导出数据库中表和表数据9、数据库导入db2 -tvf <脚本名称>.sql --把上述导出的表结构导入到数据库表结构db2move <数据库名> load -lo replace --把上述“db2move <数据库名> export “导出的数据导入到数据库中并把相同的数据替换掉在实际使用过程中,如果用到db2自增主键,需要使用by default,而不是always,功能是一样的,但这样在数据移植时候会很方便!10、db2 connect reset 或 db2 terminate --断开与数据库的连接11、db2set db2codepage=1208 --修改页编码为120812、db2 describe table <表名> --查看表结构13、db2 list tables --查看数据库中所有表结构list tables for system --列出所有系统表14、db2 list tablespaces --列出表空间二、高级篇15、fetch first 10 rows only --列出表中前10条数据例如:select * from <表名> fetch first 10 rows only16、coalesce(字段名,转换后的值) --对是null的字段进行值转换例如:select coalesce(id,1) from <表名> --对表中id如果为null转换成117、dayofweek(日期) --计算出日期中是周几(1是周日,2是周一.......7是周六)dayofweek_iso --计算出日期中是周几(1是周一.......7是周日)例如:dayofweek(date(2008-01-16)) --它会返回是4,代表星期三dayofweek_iso(date(2008-01-16)) --它会返回是3,代表星期三18、dayofyear(日期) --一年中的第几天,范围在1-366范围之内注意:参数中日期的格式是YYYY-MM-DD的形式,如果不是需要进行转换,否则函数不能使用例如:日期是20080116必须要进行转换dayofweek(concat(concat(concat(substr(openDate,1,4),'-'),concat(substr(openDate, 5,2),'-')),substr(openDate,7,2))) as week)这样格式正确的。
DB2数据库 SQL常用命令一、连接数据库1. 从命令行连接数据库- 语法: db2 connect to <database_name> user <username> using <password>- 示例: db2 connect to sample user db2inst1 using passw0rd2. 从命令行断开数据库连接- 语法: db2 connect reset- 示例: db2 connect reset3. 显示当前连接的数据库- 语法: db2 list database directory- 示例: db2 list database directory二、管理数据库对象4. 创建数据库- 语法: db2 create database <database_name>- 示例: db2 create database sample5. 删除数据库- 语法: db2 drop database <database_name>- 示例: db2 drop database sample6. 创建表- 语法: db2 create table <table_name> (<column1_name> <data_type>, <column2_name> <data_type>, ...)- 示例: db2 create table employee (id int, name varchar(50), age int)7. 删除表- 语法: db2 drop table <table_name>- 示例: db2 drop table employee8. 插入数据- 语法: db2 insert into <table_name> values (<value1>,<value2>, ...)- 示例: db2 insert into employee values (1, 'John', 25)9. 删除数据- 语法: db2 delete from <table_name> where <condition> - 示例: db2 delete from employee where id = 110. 更新数据- 语法: db2 update <table_name> set <column_name> =<new_value> where <condition>- 示例: db2 update employee set age = 30 where id = 111. 查询数据- 语法: db2 select <column1_name>, <column2_name>, ... from <table_name> where <condition>- 示例: db2 select * from employee三、管理数据库事务12. 启动事务- 语法: db2 autmit off- 示例: db2 autmit off13. 提交事务- 语法: db2mit- 示例: db2mit14. 回滚事务- 语法: db2 rollback- 示例: db2 rollback四、管理数据库权限15. 创建用户- 语法: db2 create user <username> password <password> - 示例: db2 create user testuser password testpass16. 授权- 语法: db2 grant <privilege> on <object> to <user>- 示例: db2 grant select, insert, update on employee to testuser17. 撤销授权- 语法: db2 revoke <privilege> on <object> from <user> - 示例: db2 revoke select, insert, update on employee from testuser五、管理数据库性能18. 优化SQL查询- 语法: db2expln -d <database_name> -t <sql_statement> - 示例: db2expln -d sample -t "select * from employee"19. 查看数据库锁- 语法: db2 list applications show det本人l- 示例: db2 list applications show det本人l20. 查看数据库表空间使用情况- 语法: db2pd -d <database_name> -tablespaces- 示例: db2pd -d sample -tablespaces六、其他常用命令21. 导出数据- 语法: db2 export to <file_name> of del select * from<table_name>- 示例: db2 export to employee.csv of del select * from employee22. 导入数据- 语法: db2 import from <file_name> of del insert into<table_name>- 示例: db2 import from employee.csv of del insert into employee23. 查看数据库配置参数- 语法: db2 get db cfg for <database_name>- 示例: db2 get db cfg for sample结语以上就是DB2数据库SQL常用命令的介绍,通过掌握这些命令,可以更方便地管理和使用DB2数据库。
DB2导出表结构、表数据小结2010/12/5一、DB2命令行导出数据库全库表结构①Win+R进入到DB2安装目录的BIN目录下,执行命令:DB2CMD,进入到DB2 CLP窗口。
命令:DB2CMD②创建一个data文件夹命令:MKDIR data说明:将数据库全表结构的SQL语句导出到data目录下③进入到data目录命令:CD data④导出数据库全表结构命令:DB2LOOK –D DATABASE_NAME–E –A – I USER_NAME–W P ASSWORD–O DB_DLL.sql说明:DATABASE_NAME —数据库名称USER_NAME —登录数据库用户名PASSWORD —登录数据库用户密码DB_DLL.sql —数据库全表SQL脚本文件二、DB2命令行导出数据库全库数据①执行命令,导出数据命令:DB2MOVE DATABASE_NAME EXPORT –u USER_NAME–p P ASSWORD说明:DATABASE_NAME —数据库名称USER_NAME —登录数据库用户名PASSWORD —登录数据库用户密码DB_DLL.sql —数据库全表SQL脚本文件提示:-u,-p必须是小写三、DB2命令行导出数据库单个表数据①执行命令,导出单表数据命令:DB2 EXPORT TO [path(eg..D:/TABLE_NAME.IXF)] OF IXF SELECT [字段(eg.. * or col1,col2,……coln)] FROM TABLE_NAME;说明:导出文件格式A:DEL (delimited ASCII format);B:WSF (work sheetformat);C:IXF (integrated exchange format, PC version)四、DB2命令行导入表数据①执行命令导入表数据命令:DB2 IMPORT FORM [path(eg..D:/TABLE_NAME.IXF)] OF IXF INSERTINTO TABLE_NAME;DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF INSERT INTOTABLE_NAME;DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF REPLACE INTOTABLE_NAME;//当装载数据前,先删除已存在的记录DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF RESTART INTOTABLE_NAME;//当装载失败时,重新执行,并极力导出结果和错误信息DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF RESTART INTOTABLE_NAME;//在存在自增长字段的数据导入DB2 LOAD FROM [path(eg..D:/TABLE_NAME.IXF)] OF IXF MODIFIED BYIDENTIEYIGORN INSERT TO TABLE_NAME;解除装入数据时,发生的检查挂起:SET INTEGRITY FOR TABLE1 CHECK IMMEDIATE UNCHECKED;说明:命令只对数据通过约束检查的表有效,如果执行还不能解除,有必要检查数据的完整性,是否不符合约束条件,并试图重新整理数据,再执行装入操作.db2 相关命令(db2look 和 move)以及相关SQL操作关键字: db2look move1、导出到一个文件获得sql语句db2look -d cqyancao -e -o db.sql -i db2user -w psw数据库名要出文件名用户名密码示例: db2look -d DEPARTMENT -u walid -e -o db2look.sql-- 这将生成由用户 WALID 创建的所有表和联合对象的 DDL 语句-- db2look 输出被发送到名为 db2look.sql 的文件中示例: db2look -d DEPARTMENT -z myscm1 -e -o db2look.sql-- 这将为模式名为 MYSCM1 的所有表生成 DDL 语句-- 还将生成 $USER 创建的所有联合对象的 DDL。
db2 导入导出单个表的操作详解本文将详细提供db2导入导出单表数据及db2备份恢复等相关一些操作命令汇总,有需求的朋友可以参考1、导出整个数据库表结构、方法、存储过程等,执行脚本:db2look –d dbname –e –o db.sql –i username –w passworddb2 -tvf db.sql2、单表数据的导出及导入:导出:db2move dbname export -tn tablename -u db2user -p psw导入:db2move dbname import -u db2user -p psw3、数据库的备份、恢复:备份:db2 BACKUP DATABASE dbname恢复:db2 RESTORE DATABASE dbname4、使用db2move命令导出、导入数据库数据从另一数据库中导出初始化数据,首先进入导出的目录,先DB2cmd,后输入命令为:db2move dbname export –u username –p password。
注:dbname 为原数据库名,username为用户名 password为密码。
恢复命令为: db2move dbname import -u username -p password5、其它:.导出到一个文件获得sql语句db2look -d cqyancao -e -o db.sql -i db2user -w psw数据库名要出文件名用户名密码示例: db2look -d DEPARTMENT -u walid -e -o db2look.sql-- 这将生成由用户 WALID 创建的所有表和联合对象的 DDL 语句-- db2look 输出被发送到名为 db2look.sql 的文件中示例: db2look -d DEPARTMENT -z myscm1 -e -o db2look.sql-- 这将为模式名为 MYSCM1 的所有表生成 DDL 语句-- 还将生成 $USER 创建的所有联合对象的 DDL。
Db2 文件导入导出常见命令总结Db2 的数据迁移,最常用的就是导入导出功能,而导入导出的命令貌似简单,实则内含玄机,千变万化,稍不留神,则错误百出,这儿就工作中常用到的命令,总结了一下,分享给大家!欢迎大家踊跃拍砖!? 当然在这以前,我觉得有必要提及一点关于导入导出基础的知识!DEL:界定的ASCII文件,行分隔符和列分隔符将数据分开。
ASC:定长的ASCII文件,行按照行分割符分开,列定长。
PC/IXF:只能用来在db2之间导数据,根据类型数字值被打包成十进制或者二进制,字符被保存为ASCII,只保存变量已经使用了的长度,文件中包括表的定义和表的数据。
WSF:工作表方式导入导出,这种格式的文件类型用的比较少。
Db2中对不同的数据导入导出方式,支持不同的文件类型,这里个人觉得很有必要注意的。
文件类型Import export load ------------------------------------------------------- 定界支持支持支持非定界支持不支持支持Ixf 支持支持支持Wsf工作表支持支持不支持关于3种导入导出操作进行简单的介绍:export:导出数据,支持IXF,DEL或WSF import:导入数据,可以向表中导入数据,支持上面提到的4种文件类型。
load:导入数据,功能和import基本相同。
支持以上说的几种文件类型。
关于Export 这个其实比较简单,没啥好说的,一般命令:export to filename of filetype select x from xx where 就ok了,这里需要注意的是:1. 关于不同字符集的导出MODIFIED BY CODEPAGE= Exprot to filename.del for del MODIFIED BY CODEPAGE=1386 select …from …where …; 这里,在数据从数据库倒出来的时候就会做一个数据库代码页的转换2.时间字段格式化的MODIFIED BY TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt" 例:Exprot to filename.del for del MODIFIED BY TIMESTAMPFORMAT="yyyy-mm-dd hh:mm:ss tt" select …from …where …;关于Import 1.Import模式的介绍CREATE/INSERT/INSERT_UPDATE/REPLACE/REPLACE_CREATE CREATE :首先创建目标表和它的索引,然后将数据导入到新表中。
该选项惟一支持的文件格式是PC/IXF。
还可以指定新表所在表空间的名称INSERT :将导入的数据插入表中。
目标表必须已经存在。
INSERT_UPDATE :将数据插入表中,或者更新表中具有匹配主键的行。
目标表必须已经存在,并且定义了一个主键。
REPLACE :删除所有已有的数据,并将导入的数据插入到一个已有的目标表中。
REPLACE_CREATE :如果目标表已经存在,则导入实用程序删除已有的数据,并插入新的数据,就像REPLACE 选项那样。
如果目标表还没有定义,那么首先创建这个表以及它的相关索引,然后再导入数据。
正如您可能想像的那样,输入文件必须是PC/IXF 格式的文件,因为那种格式包含对导出表的结构化描述。
如果目标表是被一个外键引用的一个父表,那么就不能使用REPLACE_CREATE。
2. 批量提交COMMITCOUNT,保证insert的数据在COMMITCOUNT以后进行一次commit,这对于大数据量的导入文件来说是一个不错的方法,例:Import from filename of del COMMITCOUNT 50000 insert into tabname;3. 批量插入MODIFIED BY COMPOUND把文件中的COMPOUND 行记录作为一组一起导入,这个操作可以和上边的批量提交一起使用,比较理想。
例:Import from filename of del MODIFIED BY COMPOUND =50 insert into tabname;4. 导入记录限制ROWCOUNT:只导入rowcount 条数据,有时候,业务逻辑需要只导入部分数据,那么ROWCOUNT是一个不错的选择,只是在我的测试中ROWCOUNT一直没有起过作用,呵呵,谁熟悉这里,帮我完善下。
例:Import from filename of del ROWCOUNT 10000insert into tabname;5. 导入起点RESTARTCOUNT:从导入文件的第RESTARTCOUNT条记录开始导入例:Import from filename of del RESTARTCOUNT 55 ROWCOUNT 10000 insert into tabname;--从55条开始,导入10000条数据6. 有警告数据的条数限制WARNINGCOUNT:当导入的数据中,有警告或错误(例如类型不匹配,列不对应等造成的)并且条数超过WARNINGCOUNT是就会停止import。
例:Import from filename of del WARNINGCOUNT 10 insert into tabname;7. 禁止发出行警告MODIFIED BY NOROWWARNINGS 例:Import from filename of del MODIFIED BY NOROWWARNINGS WARNINGCOUNT 10 insert into tabname;8. LOB 文件LOBS FROM :指出LOB的路径例:Import from filename of del LOBS FROM ‘/home’MODIFIED BY NOROWWARNINGS WARNINGCOUNT 10 insert into tabname;9. 对于自增序列(GENERATED ALWAYS)建议不要对自增序列的表进行import操作,因为import对于自增序列,只有MODIFIED BY IDENTITYIGNORE和MODIFIED BY IDENTITYMISSING 的2中操作,这2中操作都会改变自增序列的原值,这样如果导出表和表之间有基于自增序列的关联关系的话,就失去了数据本身的意义,所以建议尽量少用基于import的自增表的操作,那该怎么做?可以用load老代替import,我们下来在load的操作中会讲到!关于Load1. 字符串间隔,列间隔,小数点表示CHARDEL/COLDEL/DECPT 例:LOAD CLIENT FROM 'F:\s1.del' OF DEL MODIFIED BY CHARDEL(COLDEL= DECPT? INSERT INTO "DB2ADMIN"."ZXTABLES"2.数据库记录中存在换行符,导致数据无法装入的情况MODIFIED BY DELPRIORITYCHAR Db2默认load优先级策略为,record delimiter, character delimiter, column delimiter,这样record delimiter得优先级最高,所以原始文件如果有换行的话load就认为是新的record,如果用户在某些情况下行里面包含了换行符(比如论坛里面的一条帖子,不可能把换行符删掉的),就必须用delprioritychar改变默认的优先级别,确保""之间的数据不管有没有换行符都被认为是同一条记录例:LOAD CLIENT FROM 'F:\s1.del' OF DEL MODIFIED BY DELPRIORITYCHAR INSERT INTO DB2ADMIN.ZXTABLES3.load后表空间暂挂的处理Copy YES/ NONRECOVERABLE 对于DMS表空间,load默认为copy NO 模式,此模式下,load完成后,表空间会处于暂挂状态,这时候只能查表中的数据,需要对表空间进行一次备份,才可以对表进行update、insert等操作,那么我们可以使用如上2个命令,对于Copy YES,load完成以后会自动进行一次备份操作;NONRECOVERABLE 指出load不可恢复,此命令符不会产生表空间暂挂,也不会自动进行表空间备份,但是他有一个缺点就是,不能恢复,当数据库进行回滚的时候,不能还原,危险等级还是比较高一点,不过个人觉得也NONRECOVERABLE比较实用。
例:LOAD CLIENT FROM 'F:\s1.del' OF DEL INSERT INTO DB2ADMIN.ZXTABLES NONRECOVERABLE LOAD CLIENT FROM 'F:\s1.del' OF DEL INSERT INTO DB2ADMIN.ZXTABLES COPY YES4. load IXF类型文件到多分区数据库partitioned db configmode load_only_verify_part part_file_location 当数据在2个不同数量节点的数据库之间移动,如果还想使用load来进行IXF的数据装载就比较棘手了,当时查遍IBM的官方文档均无所获,正郁郁不安时,狼出现了,给支了一招,现分享给大家。
首先,把ixf文件复制和分区数量相同的文件,并后缀.000(分区号),比如,2个分区,那么我需要把原来的a.ixf,拷贝2个,并命名为a.ixf.000以及a.ixf.001 然后,load from staff.ixf of ixf replace into t1 partitioned db configmodeload_only_verify_part part_file_location xxxx(part_file_location为a.ixf.000所在的目录),当然如果在unix下的话,可以通过ln –s 来做一个连接也行。
5. 对于自增序列(GENERATEDALWAYS)MODIFIED BY IDENTITYOVERRIDE:此参数可以理解为,采用文件load文件中的自增值做为表自增序列的值,这样就能保证对于自增序列有业务意义,或者关联逻辑(主外键关联)的情况下保证数据的一致,个人对此命令屡试不爽例:LOAD CLIENT FROM 'F:\s1.del' OF DEL MODIFIED BY IDENTITYOVERRIDE INSERT INTO DB2ADMIN.ztables; 6. 对于自增序列(GENERATED by default)GENERATED by default可以直接通过一般的导入方式加载数据,不过有时候会有一点点小问题,自增序列没有进行分配,也就是说,原来表有50条记录,自增序列的下一次分配值为50,当你已经导入了1000条记录进去了,然后发现自增序列的下一次分配值还是为50,这种事不经常发生,但是偶尔会发生一次,比较郁闷的是,当表继续插入数据的时候,下一次分配就会发生冲突,尤其是如果自增建为主键的时候,会违反唯一约束。