首先自我介绍:我是小可!哈哈,我看云栖关于DB2文章很少,正好我也是在做数据仓库,平时用到的一些东西给大家分享一下!有问题记得评论提出哦!也可以加我的技术交流群:127591054和企鹅联系我哦!希望可以帮助到大家感谢!
第一步,学习DB2除了自己装个DB2以外,然后就要做下面这一步了!编目!为什么要编目?因为要在本地访问远程数据库!所以需要在下面黑框框写下面的语句哦!有问题欢迎评论!
1、编目
db2 catalog tcpip node 节点名 remote ip地址 server 端口;
db2 catalog db 数据库名字 as 取得别名 at node 节点名;
db2 terminate;
其中:tcpid是网络请求方式,编码数据库,名字不能超过8位
remote是ip,server是端口
取消命令:
db2 uncatalog node 节点名 (取消节点的编目)
db2 uncatalog db 取得别名 / 数据库名字 (取消数据库的编目)
备注:其中节点名和别名是自己随便写的哦!不过两个节点名是一样的!
当然编目完就需要连数据库了!!大家对于编目有问题可以评论留言哦!
2、连接数据库
db2 connect to 取得别名 / 数据库名字 user 用户名 using 密码
3、查询编目信息和数据库信息
db2 list db directory
#########:查询连接了多少个数据库
db2 list node directory
#########:连接点,表示创建多少个节点连接几个库。
**(下面这个估计用到的最多,至少我是哈哈,首先大家要记住导入导出数据格式Del格式文件,这个是DB2的一种存放数据的格式,还有IXF格式,这两个格式存放的规则不一样)
4、导入导出数据export/import/load**
首先给大家看下,导出的目录结构!这个是ixf格式导出的!一般我用的都是DEL导出,方便简单!后面我会以这两种方式为例讲一下导出导入
Export:
db2 “export to 目录/表名.del of del select * from 表”;
db2 "export to 目录\tab1.ixf of ixf lobs to 目录\ lobfile lobs modified by lobsinsepfiles messages 目录\tab1.msg select * from schema_name.table_name";
说明:schema_name 是表所属
table_name是表名
lobsinsepfiles,lobsinfile 是生成lob文件 前一个是生成每个,后面是生成到一个文件中
messages:是导出的日志。
IXF文件——是集成交换格式
DEL文件——定界ASCII文件,也是一个ASCII字符流。
IXF是这个样子的。DEL就是以,号分隔得的,记事本打开直接看也很清晰!所以一般导出这个格式。
Import:
db2 “import from目录/表名.del of del select * from 表”;
db2 “import from 目录/表名.ixf of ixf messages msg2.txt insert into 表”
Load
说起Load大家只需要记得Load不要生成日志所以很快!Import需要生成就够了!用法和Import与Export基本一样,换个名字而已。
db2 “load client from FILENAME of del modified by codepage=1386 coldel; chardel’ dumpfile=PATH/FILENAME messages PATH/FILENAME insert into TABLEBAME for exception TABLENAME ALLOW READ ACCESS”
常用的语法:
db2 “load from 目录/表名.del of del insert into 表”
Load报错解决方法:
db2 “load from dev/null of del termiate into 表”
下面是参数介绍大家可以看看!
5、db2look(导出表结构)/db2move(批量处理导入导出)
参数:
-u -用户名
-p -密码
-tn -表名,导出单一表
-tf - 文件名,文件中每行记录一个完整的表名
-ts -表空间名称,用于导出某个表空间下的所有数据
-tc -表创建者,导出某用户创建的所有数据
-sn -模式名,用于导出某个模式下的所有数据
db2move 数据库名字export –u 用户名 –p 密码
例如:
db2move yun_pas export -sn ytfinst -u pasinst -p pasinst
说明:
1,这将会把数据库testdb中的全部数据提取到当前目录中。
每个表的内容都存储在一个.ixf文件中,每个.ixf文件都有一个与之相对应的.msg文件,.msg文件是描述从表中导出数据时的信息的。另外还有两个文件,db2move.lst用来记录.ixf文件、.msg文件与表的一一对应关系,EXPORT.out记录的是导出数据时的屏幕输出。下面的图就是一个完整的批量导出某个模式下的数据的目录。
大量例子来袭
1)、全库数据导出,导出语句如下
db2move db export -u db2admin -p db2admin
2)、导出某个表空间的所有数据
db2move db export -ts tb1 -u db2admin -p db2admin
若要导出多个表空间数据,方法如下:
db2move db export -ts tb1,tb2 -u db2admin -p db2admin
注:上行语句中的“tb1,tb2”用逗号分隔,且不能有空格
3)、导出单一表
db2move db export -tn tbname -u db2admin -p db2admin
4)、导出某个模式下的所有数据
db2move db export -sn schemaname -u db2admin -p db2admin
5)、根据配置文件导出数据
配置文件中记录需要导出的所有表名,必须注意,每行只能写一个完整表名,且要加上所属的模式名,并以加上双引号
在此,在db2cmd所在的目录下,创建一个文件,如table.txt,文件中如下编写:
"db2admin"."table1"
"db2admin"."table2"
"db2admin"."table3"
导出语句为:
db2move db export -tf table.txt -u db2admin -p db2admin
这样就可以根据 table.txt 文件中配置的表,导出相应数据。
6)、导出某个用户下的所有数据
db2move db export -tc db2admin -u db2admin -p db2admin
7)、通过import,replace数据
db2move db import -io replace -u db2admin -p db2admin
db2look:
1、语法(我们其实可以在db2cmd打db2look也是可以出来的!我这里贴图)
大量例子来袭哈哈:
其中 数据库名:sample 用户:db2admin模式名:db2admin
1、db2look -d sample -u db2admin -e -o db2look.sql
-- 这将生成由用户db2admin 创建的所有表和联合对象的 DDL 语句
-- db2look 输出被发送到名为 db2look.sql 的文件中
3.、db2look -d sample -z db2admin -e -o db2look.sql
-- 这将为模式名为db2admin 的所有表生成 DDL 语句
-- 还将生成 $USER 创建的所有联合对象的 DDL。
-- db2look 输出被发送到名为 db2look.sql 的文件中
3.、db2look -d sample -u db2admin -m -o db2look.sql
-- 这将生成 UPDATE 语句以捕获关于用户db2admin创建的表/昵称的统计信息
-- db2look 输出被发送到名为 db2look.sql 的文件中
4.、db2look -d sample -u db2admin -e -wrapper W1 -o db2look.sql
-- 这将生成由用户db2admin创建的所有表的 DDL 语句
-- 还将生成适用于包装器 W1 的用户db2admin所创建所有联合对象的 DDL
-- db2look 输出被发送到名为 db2look.sql 的文件中
5、db2look -d sample -u db2admin -e -server S1 -o db2look.sql
-- 这将生成由用户db2admin创建的所有表的 DDL 语句
-- 还将生成适用于服务器 S1 的用户db2admin所创建所有联合对象的 DDL
-- db2look 输出被发送到名为 db2look.sql 的文件中
6、执行sql脚本
db2 -tvf 目录\xxx.sql -z 目录\xxx.log
7、编译执行存储过程(大家对这个不太理解我们后面在说!)
编译:db2 -td@ -f 存过文件位置
执行:db2 “call 存过名字(参数)”