DB2数据库:批量导入(Import)导出(Export)加载(Load)

导入和加载都是利用DB2的相关命令把某种格式的文件中的数据保存到数据库中的表中;导出是指把DB2数据库的表中的数据保存到某种格式的文件当中去。

1、DB2 export --导出

export 使用 SQL 从表中读取数据。export将数据所写到的文件可以是几种标准文件格式的一种,它仅支持三种数据文件格式:DEL,WSF,IXF 。一般是IXFDEL

1.export 语法

bash 复制代码
1、导出某张表的数据
 export to ***.del of del select * from db.tabname(表名);
 eg:export to ./test.del of del select * from test(将某张表的数据导出到当前目录下,具体导出目录在to 后可以指定)
 
2、导出某个存储过程数据
 export to ***.db2 of del select TEXT from syscat.procedures where PROCNAME='需要导出的存储过程名称';
eg:export to ./XXX.db2 of del select TEXT from syscat.procedures where PROCNAME='test';

3、导出某个函数数据
 export to ***.db2 of del select BODY from syscat.functions where FUNCNAME='需要导出的函数名称';
 eg:export to ./test.db2 of del select BODY from syscat.functions where FUNCNAME='test';
 
4、大数据量导出
export to /test/***.del of del lobs to /test/ select * from db.tabname(表名);
(注:BLOB类型:其中第三个字段是BLOB类型,在该文件export to后路径只保存了一个标志,相当于一个指针,真正的LOB数据保存在lobs to后的文件目录下的001.lobs、002.lobs、......等一系列文件中。
命令中lobs to 后面指定大对象数据保存在什么路径下(注意,该路径必须事先已经存在,否则会报错)

6、导出类型为ixf文件数据
export to ***.ixf of ixf lobs to select * from db.tabname;
eg:export to /test/test.ixf of ixf lobs to /test/ select * from test;

7、批量导出
eg:导出3张表数据(导出存储过程同理)
步骤1:将N张表数据语句写好,然后保存在一个以***.sql结尾的文件里面
export to ***1.del of del select * from db.tabname1;
export to ***2.del of del select * from db.tabname2;
export to ***3.del of del select * from db.tabname3;
步骤2:将这个文件传到服务器,执行命令:db2 -tvf ***.sql |tee ***.sql.out(注:|tee 是输出日志文件,也可直接db2 -tvf ***.sql)

8、批量执行存储过程
eg:执行3个存储过程
步骤1:将N个存储过程语句写好,然后保存在一个以***.sh结尾的文件里面
db2 -td@ -vf ./procedures1 |tee procedures1.out
db2 -td@ -vf ./procedures2 |tee procedures2.out
db2 -td@ -vf ./procedures3 |tee procedures3.out
步骤2:将这个文件传到服务器,执行命令:.sh结尾文件,可以用./***.sh 或 sh ***.sh 命令执行(注:|tee 是输出日志文件)

9、批量导出表和批量执行存储过程,
eg:直接将***.sql文件和***.sh文件放在一个sh文件里面,传到服务器上,用./***.sh 或 sh ***.sh 命令执行
db2 -tvf ***1.sql |tee ***1.sql.out
db2 -tvf ***2.sql |tee ***2.sql.out
db2 -tvf ***3.sql |tee ***3.sql.out
db2 -td@ -vf ./procedures1 |tee procedures1.out
db2 -td@ -vf ./procedures2 |tee procedures2.out

2、DB2 import --导入

主要的 DB2 导入模式有:

bash 复制代码
1、INSERT into:将输入数据添加到表中,并且不更改任何现有数据。
import from XXX.del of del insert into tablename
eg:import from ./***.del of del insert into db.tabname

2、INSERT_UPDATE into:将新的输入数据添加到表中,或者用具有匹配主键值的输入数据更新现有的行。
import from ***.del of del INSERT_UPDATE into db.tabname

3、REPLACE into: (通过删除数据对象)删除表中的所有现有数据,然后再插入输入数据
import from ***.del of del REPLACE into db.tabname

4、REPLACE_CREATE  into :删除现有表中的所有数据,然后再插入输入数据。如果该表不存在,该模式将优先于插入输入数据而创建表。
该模式只对 PC/IXF 输入文件有效

3、DB2 load --加载

load 工具非常高效地将一个或多个输入文件中的数据写到数据库表中。load 工具也从指定的管道、设备(比如磁带设备)或用户定义游标接受输入。load 工具与 import 工具不一样,不是使用 SQL 将数据写到目标表中;它是直接将格式化的页写到表中,因此比 import 工具要快得多。load 工具从中读取数据的文件可以是几种标准文件格式中的一种,一般是 PC/IXF、DEL 或 ASC。

bash 复制代码
1、load  insert into 
load from /home/user/test/data/***.del of del modified by insert into db.tabname nonrecoverable;
该命令将指定路径下的 .del 文件数据导入到 db.tabname 表中,nonrecoverable 是必须添加的参数 

2、load  replace into
load from /home/user/test/data/***.del of del modified by  delprioritychar replace into db.tabname nonrecoverable;
此命令同样是将指定路径的 .del 文件数据导入到db.tabname 表,delprioritychar 可能用于处理优先级字符,replace 表示替换表中原有数据 

4、扩展知识:用于DB2数据的文件格式有四种

1、ASC(ASCII):ASC------非定界ASCII文件,是一个ASCII字符流。数据流中的行由行定界符分隔,而行中的每一列则通过起始和结束位置来定义。

2、DEL(Delimited ASCII):DEL------定界ASCII文件,也是一个ASCII字符流。数据流中的行由行定界符分隔,行中的列值由列定界符分隔。文件类型修饰符可用于修改这些定界符的默认值。

3、WSF( Work sheet format):WSF------(work sheet format)为工作表格式,用于与Lotus系列的软件进行数据交换。

4、PC/IXF( Integrated Exchange Format):PC/IXF------是集成交换格式(Integration Exchange Format,IXF)数据交换体系结构的改编版本,由一些列可变长度的记录构成,包括头记录、表记录、表中每列的列描述符记录以及表中每行的一条或多条数据记录。PC/IXF文件记录由包含了字符数据的字段组成。

ASC 和 DEL 格式的文件是文本文件,可以用任何文本编辑器打开。

WSF 格式的文件可以将数据迁移到电子表格软件中,例如 Excel,Lotus® 1-2-3。

IXF 格式文件包括了数据表的数据描述语言(DDL)和里面的数据。使用 IXF 格式是非常方便的,利用它可以重建数据表,而其他格式则没有办法这么做.

当数据导出到文件后,使用 Import 可以将数据由文件导入到数据表中。如果使用 ASC,DEL 和WSF 格式的文件作为中间文件,在它们导入之前数据表必须存在。而使用 IXF 格式的文件在导入前不需要存在相应的数据表。

相关推荐
霸王大陆1 小时前
《零基础学PHP:从入门到实战》教程-模块七:MySQL 数据库基础-4
数据库·mysql·php
i小白1 小时前
Sql Server 大批量数据迁移
服务器·数据库
Leon-Ning Liu1 小时前
【系列实验一】Oracle 19c RAC 安装(4个节点)
数据库·oracle
xuanloyer1 小时前
oracle从入门到精通--oracle体系结构
数据库·oracle
生产队队长1 小时前
Database:Linux环境中的Oracle修改密码
linux·数据库·oracle
Elseide艾思1 小时前
【数据速递】数字经济招聘数据(2012年至今)
数据库
叽里咕噜怪1 小时前
MySQL-主从复制实验详解
数据库·mysql
即将进化成人机1 小时前
巷陌店铺方法功能整理
数据库·mysql
菜萝卜子1 小时前
k8s 启动 postgresql 数据库
数据库·postgresql·kubernetes