暂无图片
暂无图片
2
暂无图片
暂无图片
暂无图片

DB2 - 初步学习笔记

原创 伊织鸟 2024-07-22
406

1、基础知识

版本信息(一年一个小版本)

V9.0发布于 2006年
V10.5发布于 2013年
V11.5发布于 2023年

--查看数据库版本 db2level

支持的系统

  • zSeries/iSeries/pSeries
  • Windows
  • Linux/Unix

支持的版本

  • DB2 Express-C : 社区学习版本,仅支持2C16G
  • DB2 Express : 社区收费版本,支持8C64G
  • DB2 WorkGroup Server :企业组版本, 支持16C128G
  • DB2 Enterprise Server :企业版本, 资源无限制
  • DB2 Advanced Enterprise Server : 企业高级版本,资源无限制,包含多功能组件(集群等)

数据库组件

  • IBM DATA Server Client

    针对于DBA,没有图形界面,只提供命令行

  • IBM DATA Server Runtime Client

    针对于designer,有图形化界面,提供API

  • IBM DATA Server Driver Package

    针对于app,提供驱动程序

软件包地址

下载地址:
https://www.ibm.com/cn-zh/products/db2?lnk=flatitem

官方手册:
https://www.ibm.com/docs/en/db2/11.5

历史版本:

补丁地址(3个月左右一个补丁包)

补丁地址:
https://https://www-01.ibm.com/support/docview.wss?rs718&uid=swg27007053


补丁概览(截止至2020年):
图片.png

2、体系结构

物理结构

  • 实例 => 数据库 => 表空间 => 表空间容器(container) => 区(extent) => 数据页(datapage) (1:N)

    1、一套服务器可以安装多个实例

    2、一套实例有多个数据库,表空间,表空间容器,区,数据页构成

    3、表空间容器有点类似于datafile,可以是目录,文件,设备
--查看实例,查看不同实例,是要切换不同用户 db2list --查看实例下的用户 db2 list db directory --链接数据库 db2 connect to <db_name> --链接远端数据库 ----远端编目(远端数据库文件映射到本地) db2 CATALOG TCPIP NODE <node_name> REMOTE <remote_ip> SERVER <port> db2 list node directory ----本地编目(远端数据库注册到本地实例) db2 CATALOG DATABASE <db_name> AT NODE <node_name> db2 list db dierectory ----登录数据库 db2 connect to <db_name> user <user_name> using <password> --查看数据库连接 db2 list applications --查看数据库表空间 db2 connect to <db_name> db2 list tablespaces

3、安装

检查安装前提版本

系统版本要求

(Database reference content - Database fundamentals - Installing - Installation requirements for Db2 database products - database-system-requirements)

https://www.ibm.com/docs/en/db2/11.5?topic=database-system-requirements

图片.png

安装方式

  • 图形化部署
  • 命令行部署
  • 静默安装部署
  • 源码部署

图形化部署

命令行部署

--环境检查 su - root ./db2prereqcheck --安装软件 su - root ./db2_install --交互1:输入软件安装目录 --交互2:需要安装的数据库组件产品(多个组件的话,用<空格>分隔) --交互3:是否安装分区式特性(prueScale) --创建用户 su - root groupadd db2iadm1 groupadd db2fadm1 useradd -d /home/db2inst1 -g db2iadm1 db2inst1 useradd -d /home/db2fenc1 -g db2fadm1 db2fenc1 passwd db2inst1 passwd db2fenc1 sudo chage -M -1 db2inst1 sudo chage -M -1 db2fenc1 --创建实例 su - root cd <软件安装路径>/instance ./db2icrt -u db2fenc1 db2inst1 su - db2inst1 db2start db2list --创建数据库 su - db2inst1 db2 create db <db_name> db2 list db directory

4、实例管理

实例与用户的关系

  • windows无需新建用户
  • Linux/Unix的用户名与实例名一致(需要用户的home目录,缓存db2实例目录)

DB2环境变量

?环境变量优先级:全局DB2环境变量[g] > 实例级DB2环境变量[i] > 实例节点级DB2环境(分区环境) > 系统环境变量[e]

--检查环境变量设置 db2set -all --设置环境变量 db2set --查看所有可以进行定义的环境变量 db2set -lr

实例目录

存储实例相关的数据库信息,实例创建后自动创建,一般在/home/InstName/sqllib目录下

  • 数据库诊断日志:sqllib/db2dump/db2diag.log
  • 数据库编目目录:sqllib/sqldbdir/sqldbdir
  • 数据库参数文件:sqllib/db2systm
  • 分区节点配置文件:sqllib/db2nodes.cfg

使用db2icrt命令创建实例

用户状态必须要正常 - 可以调整用户永不过期

--Windows创建实例 $DB2DIR/bin/db2icrt <InstName> --Linux/Unix创建实例 su - root $DB2DIR/instance/db2icrt -u <FencedID> <InstName>

图片.png

启动实例

需要su到实例同名用户下执行

su - db2inst1 db2start

图片.png

远程连接/断开实例

一般用于远程连接实例

--连接实例 su - db2inst1 db2 attach to <InstName> --断开实例 db2 detach

关闭实例

只能使用子参数force强制停止已有session链接的实例

su - db2inst1 db2stop --强制停止实例 db2stop force

图片.png

实例参数

每个实例一组参数,参数分为立刻生效和重启生效

--查看参数 db2 get dbm cfg --修改参数 db2 update dbm cfg using <cfg_name> <cfg_new_values> --置回参数 db2 reset dbm cfg

删除实例

使用root权限操作,会删除/home/InstName/sqllib目录,可以提前备份

su - db2inst1 db2stop force su - root $DB2DIR/instance/db2drop <InstName>

图片.png

其他常用命令

--查看实例 db2ilist --升级实例 db2iupdt --迁移实例 db2imigr --实例自启动 db2iauto

5、数据库管理

安装方式

  • 图形化向导安装
  • 命令行安装

命令行安装数据库

子参数语法解析

  • 数据库存储路径,需要提前创建路径,并赋权
    • automatic storage:数据自动存储参数,数据库级别设置表空间容器,在创建表空间时,不用再设置表空间容器了
    • on: 数据库可以使用的表空间容器
    • dbpath on: 数据库本地存储路径,主要存放日志,控制文件等基础文件
## 语法 automatic storage[yes|no] on {path|drive} dbpath on {path|drive} ## 示例: create database db1 on /path; --自动存储路径:/path --存储路径:/path create database db2 automatic stroage no on /path2; --自动存储路径:未开启 --存储路径:/path2 create database db3 on /path3 dbpath on /dbpath3; --自动存储路径:/path3 --存储路径:/dbpath3 create database db4 on /path4 dbpath on /dbpath4; --自动存储路径:/path4 --存储路径:/dbpath4 create database db5 automatic stroage yes on /path5,/path6,/path7 dbpath on /dbpath5; --自动存储路径:/path5,/path6,/path7 --存储路径:/dbpath5
  • 数据库字符集和区域
    • codeset: 字符集
    • territory: 地区
    • collect: 排序规则,创建数据库时,如指定为system或不指定,则由codeset,territory联合指定,如指定为identify,则为逐字节比较。一般设置为system即可
## 语法 using codeset {character-name} territory {territory_name} collect using {system|identify|collect_name} ## 实例 create database db1 using codeset UTF-8 territory US; --字符集:UTF8 --地区:en_US --排序:en_US.UTF8 create database db2 using codeset GBK territory CN collate using system; --字符集:GBK --地区:zh_CN --排序:zh_CN.GBK
  • 区,数据页大小
    • pagesize: 数据及缓冲池数据页大小(4k,8k,16k,32k)
    • dft_extent_sz:
## 语法 pagesize {4k|8k|16k|32k} dft_extent_sz [int] ## 示例 create database db1 pagesize 4k dft_extent_sz 5; create database db2 pagesize 4096 dft_extent_sz 100;
  • 默认表空间
    • catalog tablespace: 系统编目表空间,数据字典
    • temporary tablespace: 临时表空间,存放SQL操作生成临时结果集
    • user tablespace: 默认的数据表空间
## 语法 catalog tablespace {tablespace_name} temporary tablespace {tablespace_name} user tablespace {tablespace_name}

数据库目录重要文件

  • 数据库目录 : db_path/InstName/NODE0000/SQL00001/MEMBER0000

    • db_path:数据库本地没记录
    • instance_name:实例名
    • NODE:用于区分多分区数据库
    • SQL:用于区分数据库关联对象
    • MEMBER: 用于区分数据库分区特定成员
  • 全局分区目录下重要文件

    • 表空间信息文件: SQLSPCS.1 / SQLSPCS.2
    • 存储器组控制文件: SQLSGF.1 / SQLSGF.2
    • 全局配置文件(不能直接修改):SQLDBCONF
    • 历史记录文件:DB2HIST.ASC / DB2HIST.BAK
    • 日志记录文件:SQLOGCTL.GLFH.1 / SQLOGCTL.GLFH.2
    • 实例锁定文件:SQLINSLK / SQLTMPLK
  • 特定成员目录下重要文件

    • 缓冲池文件:SQLBP.1 and SQLBP.2
    • 本地事件监控文件
    • 日志记录文件:SQLOGCTL.LFH.1 / SQLOGCTL.LFH.1 / SQLOGCTL.LFH
    • 本地配置文件:SQLDBCONF

6、表空间管理

表空间的结构

图片.png

表空间类型

  • 目录表空间

    用于存放数据字段,默认名称为syscatspace

  • 临时表空间

    • 系统临时表空间

      用于存放分组 / 排序 / 链接 / 重组 / 创建索引等操作的结果集,每个数据库至少应该有一个系统临时表空间,默认名称为tempspace1
    • 用户临时表空间

      用于存储临时表,默认不创建,需要手动创建
  • 用户表空间
    存放用户表,索引等数据,默认为userspace1

表空间存储管理

  • 系统管理表空间(SMS)

    表空间容器为系统目录,空间的分配和管理由文件系统完成,一般优化参数较少,且性能表现较差
    图片.png

  • 数据库管理表空间(DMS)

    表空间容器为文件裸着裸设备,空间的分配和管理由数据库完成,可以创建普通表空间和大文件表空间(默认)
    图片.png

  • 自动存储表空间(Auto Storage With DMS)

    表空间容器的管理交由DMS自动管理,增加操作自动化,较少用户交互管理表空间成本,可以创建普通表空间和大文件表空间(默认),只有该方式可以使用存储器组

表空间的容量限制

图片.png

创建表空间

表空间名不能同名,并且不能以sys开头

## 语法 create {large | regular | [system|user] temporary} tablepace tablespace_name pagesize [nK] managed by {automatic storage [storage_container][size_attr] | system using [system_container] extentsize [num-page | int(K|M|G)] | database using [database_container] extentsize [num-page | int(K|M|G)]} prefetchsize [automatic | num-page | int(K|M|G)] bufferpool [bufferpool_name] droped table recovery [on|off] ## 示例 create tablespace tbs1; create user temporary tablespace tbs2; create large tablesapce tbs3 pagesize 8k; create tablesapce tbs4 manged by database using (file '/dbpath/tbs1.dbf' 10m,file '/dbpath/tbs2.dbf' 100m);

管理维护表空间

## 查看表空间 db2 list tablespaces db2 list tablespaces show detail ## 查看表空间容器 db2 list tablespace containers for tablespace_id [show detail] ## 修改表空间 alter tablespace tablespace_name 子选项 ## 添加容器 alter tablespace tablespace_name add (device '/dev/sdb1' 100m, device '/dev/sdc1' 100m); ## 扩容容器 alter tablespace tablespace_name extend (all 1000); --所有的容器扩容为1000个pagesize alter tablespace tablespace_name resize (file '/dbpath/df01.dbf' 10k) --将指定容器缩容为10k ## 删除容器 alter tablespace tablespace_name drop (file '/dbpath/db01.dbf'); ## 重命名表空间 db2 rename tablespace tbs1 to tbs2; ## 删除表空间 db2 drop tablespace tbs1;

温差存储器组

  • 通过将不同io性能的磁盘划分为存储器组实现dml性能的上升
  • 默认存储器组为IBMSTOGROUP
  • 每个表空间只能使用一个存储器组,一个存储器组可以对应多个表空间
--创建磁盘组 create stogroup sg1 on '/db2/fastdisk/sgpath1'; ## 查看存储器组 db2 list db directory db2 connect db_name db2pd -d db_name -storagegroup ## 创建表空间,并指定存储器组 create tablespace tbs1 using stogroup sg1; select tbspace,sgname,sgid from syscat.tablespaces; ## 变更表空间存储器组 alter tablespace tb1 using stogroup IBMSTOGROUP; ## 删除存储器组 alter tablespace tb1 using stogroup IBMSTOGROUP; ##先卸载再删除 drop stogroup sg1;

7、表管理

表的常用命令

##数据类型
数值型:smallint,int,bigint
小数型:decimal
浮点型:real,double
定长字符:char(254 byte)
变长字符:varchar(32672 byte)
长数据类型:long varchar(32700 byte)
字符大对象:clob
二进制大对象:blob

--创建表
db2 "create table t1 (id int,gender char(1),name varchar(100))"
db2 "create table t2 like t1"
db2 "create table t3 like t1 in tbs1"                                      ##指定表空间

--查看表结构
db2 describe table <tabname>

--查看表所在的表空间
db2 list tablespaces
db2 "select tabname,tbspace,from syscat.tables where tabname='<tabname>'"   ##表名大写

--表添加列
db2 "alter table t4 add c4 varchar(10)"
db2 "alter table t5 add column c5 interge set not null with default 1"
db2 describe table t4
db2 describe table t5

--修改列的数据类型
db2 "alter table t6 alter c6 set data type varchar(20) alter c1 set not null alter c2 drop not null"
db2 describe table t6

--删除列
db2 "alter table t7 drop c6"

--删除表
db2 "drop table t8"

--建立索引
db2 "create index ind_t9 on t9(id)"
db2 "create index ind_t10 on t10(id desc,name asc)"                        ##索引默认升序排列
db2 "create index ind_t11 on t11(id) allow reverse sacn"                   ##双向索引(双重asc和desc排序),并不是类似于oracle的key值倒序索引(主要用于分散热快)
db2 "create unique index ind_t12 on t12(id) include (name) in tbs1"        ##索引中包含name列的record

--创建约束
db2 "create table t13 (id primary key auto_increment,name char(20) constraint cu_name unique,gender char(1) not null)"

--添加约束
db2 "alter table t14 add constraint unique(c1)"
db2 "alter table t15 add gender char(1) check (gender in ('M','W'))"

--外键约束
##外键级联操作
CASCADE             -- 主表删除或修改记录时,子表也会对关联字段record进行修改。
RESTRICT            -- (默认)删除或修改主表记录,子表中若有关联字段record,则不允许主表删除或修改
SET NULL            -- 主表删除或修改主表记录时,子表会将关联字段record设为null。
ON UPDATE CASCADE   -- 主表修改记录时,子表关联字段record也会修改。
ON DELETE CASCADE   -- 主表删除记录时,子表关联字段record也会删除。

db2 "create table t8 (id integer not null primary key,foreign key(id) references t100(dep_id) ON UPDATE CASCADE ON DELETE CASCADE)" 

8、物理备份与恢复

数据库运行日志

  • activelog,前滚日志,记录数据DML操作
    • 日志命名:S0000000.LOG(7位数字)
    • 主日志文件:activelog主文件,数据库启动时,立刻分配空间
    • 辅助日志文件:如果activelog不足的情况下,临时动态的生成次日志文件
  • archivelog,前滚日志归档日志,用于备份前滚日志
  • backuplog,备份日志,主要用于增量备份和前滚回复
    --参数设置 logprimary -- activelog主日志文件个数,整型数值 logsecond -- activelog次日志文件个数,整型数值 logbusz -- 日志缓冲区 logfilesz -- 日志文件大小,整型数值,对应1个4K page newlogpath -- 手动设置的activelog路径,字符路径 mrriorlogpath -- 额外的activelog路径,主要用于冗余容灾,字符路径 blk_log_dsk_full -- 日志磁盘已满挂起,布尔 archretrydelay -- archivelog重试延迟,second时间,默认20s logarchcompr1 -- 主日志文件归档日志压缩,布尔 logarchcompr2 -- 次日志文件归档日志压缩,布尔 logarchmeth1 -- 主日志文件归档路径,字符路径,设置示例:disk:/tmp/db2arch | tsm logarchmeth2 -- 次日志文件归档路径,字符路径,设置示例:disk:/tmp/db2arch | tsm max_log -- 一个事务可以使用最大activelog百分比,整型数值 mincommit -- 组提交的最小commit数,整型数值

备份

  • 全量备份
  • 增量备份
    • 累计增量备份:全量到本日的增量数据(backuplog)
    • 差异增量备份:每天之间的增量数据(backuplog)
## 语法 backup database (user username using password) | tablespace tblpsc_name | online (默认是offline备份) | incremental (delta) using tsm ( open sessions )| to [dir | dev] buffer buffer_size | parallelism n compress [compress_remark] | encrypt [encrypt_remark] util_impact_priority include logs (exclude logs) ## 参数说明 user username using password -- 备份的用户名密码(本地实例用户无需提供密码) tablespace -- 备份表空间名称 online -- 在线备份,默认是offline备份 incremetal (delta) -- 增量备份 using tsm (open sessions) -- 使用tsm等第三方工具备份,open sessions - io会话数量 to [dri|dev] -- 直接备份的路径或者设备 buffer -- 备份时的缓存数量,4k为单位,不建议人工设置 parallelism -- 并行度,不建议设置人工设置 compress -- 压缩,跟加密只能二选一 encrypt -- 加密,跟压缩只能二选一 util_impact_priority -- 备份任务默认优先级(1-100),默认50 include logs (exclude logs) -- 是否备份联机事务日志,include(online在线备份生效)|exclude(offline离线备份生效) ## 备份示例 --全库冷备 db2 stop force && db2start / db2 force application all db2 backup database db1 --全库热备 db2 backup database db2 online to /tmp/dbak1 --多个路径下的全库副本热备 db2 backup database db3 online to /tmp/dbak2,/tmp/dbak3,/tmp/dbak4 --表空间在线备份,注意online要在tablespace后面 db2 "backup database db4 tablespace (tb1,tbs2) online to /tmp/dbak5" --累计增量备份 db2 backup database db5 online incremental to /tmp/dbak6 --差异增量备份 db2 backup database db6 online incremental delta to /tmp/dbak7 --带archivelog的差异增量备份 db2 backup database db7 online including logs incremental delta to /tmp/dbak8 --备份数据所有分区 db2 backup database db8 on all dbpartitionnums to /tmp/dbak9 --使用TSM备份 db2 backup database db9 online inlcuding logs incrementail delta use tsm open 2 sessions with 4 buffers --检查数据库的备份集信息 db2 list history all for db_name db2 list history since 20240627003000 for db_name --检查备份有效性 db2ckbkp -h backupsetname --

恢复

  • 恢复历史记录文件
    • 文件名为DB2RHIST.ASC和DB2RHIST.BAK
    • 用于记录备份信息摘要,跟踪数据备份恢复历史记录
    • 更新历史文件的动作
      • 备份数据库/表空间
      • 恢复数据库/表空间
      • 前滚数据库/表空间
      • 自动重建数据库
      • 创建/更改/停顿/重命名表空间
      • 装入/删除/重组表
      • 归档日志文件/使用新日志文件
      • 恢复数据库
      • 复原数据库/表空间操作失败



    • ListHistory.op速查
      list.op速查



    • ListHistory.type速查
      list.type速查
## 查看历史记录文件语法 list history {backup | rollforward | dropped table | load | create tablespace | alter tablespace | drop tablespce | reorg | archive} { all | since timestamp | containing (schema.object_name)} for (database | db) ## 参数说明 all -- 输出所有信息 since -- 输出自时间之后的信息 containing -- 输出包含对象的信息 for (database | db) -- 输出指定数据库信息 ## 示例 --查看db1数据库自2024年7月8日之后的历史记录 db2 list history since 20240708 for db1 --查看db2数据库的表空间tbs2的所有备份操作 db2 list history backup containing tbs2 for db2 --查看db3数据库所有drop table操作 db2 list history dropped table all for db3 --查看分区数据库 db2_all "db2 list history since 20240708 for db4"
  • 恢复的类型
    • 崩溃回复(instance crash)
    • 版本回复(backupset recovery)
    • 前滚回复(backupset + activelog recovery)

TIPS: 如果备份时,带了include logs子参数,则需要前滚恢复

## 语法 ## 示例 --检查数据库的备份集信息 db2 list history all for $db_name --版本恢复 ## into db1_new -- 将数据库恢复到异名数据库下 ## replace existing -- 替换原有文件 db2 restore database db1 from /dbbackuppath1 taken at 20240807 into db1_new replace existing --前滚回复 ----备份集中包含日志文件 db2 backup database db2 online to /dbbackuppath1 include logs ----还原数据库 ## logtarget /dbbackuppath1/logs -- 将logfile恢复到指定文件目录下 ## to end of logs and complete -- 前滚到logfile结束时间点 ## to end of backup and complete -- 前滚到backupset结束时间点 ## overflow log path /dbbackuppath/logs -- 在恢复日志后,回去该目录下查找logfile ----只恢复logfile,不回复备份集 db2 restore database db2 logs from /dbbackuppath1 logtarget /dbbackuppath1/logs ----前滚不完全恢复 db2 restore database db2 db2 rollforward database db2 to end of backup and complete or ----前滚完全恢复 db2 restore database db2 db2 rollforward database db2 to end of logs and stop overflow log path /dbbackuppath/logs --增量备份前滚恢复 db2 restore database db3 incremental automatic taken at 20240708000000 db2 rollforward database db3 to end of logs and complete ## 注意选择正确的end of logs/backup --前滚恢复表空间 db2 "restore database db4 tablespace (ts1) online token at 20240708000000 " db2 rollforward database db4 to end of logs and complete tablespace (ts1) db2 list tablespace for ts1

9、逻辑备份与恢复

文件格式

  • ASC文件:ASC文件中包含固定定长字符,只能用户导入 A__B__C
  • DEL文件:DEL文件,可以使用间隔符,文本附,换行符定义字符串 A,B,C
  • PC/IXF文件:包含数据结构的DDL,和record,导出文件是二进制
  • WSF文件

数据导出

  • EXPORT
    • EXPORT语法
    • 支持导出到DEL,IXF,WFS文件中
    • 要求具有sysadmin,dbadmin权限,或者导出对象的control或select权限
## 语法 EXPORT TO <dumpfile_name> OF <file_type> LOBS TO <lob_path> LOBFILE <lob_filename> XML TO <xml_path> XMLFILE <xml_filename> MODIFIED BY <filetype_mod> MESSAGES <message_file> <query> ## 参数释义 TO <dumpfile_name> -- 导出文件的路径和名称 OF <file_type> -- 导出文件类型,可以选择DEL,IXF,WFS MODIFIED BY <filetype_mod> -- 使用修饰符导出文件 chardelx : 字符数据类型定界符(字符引用符),默认为("),这里指定x为分隔符 coldelx : 列定界符(列分隔符),默认为(,) codepage=x : 文本字符集,默认(1208 UTF-8) timestampformat="x" : 设置日期数据格式,YYYY/MM/DD HH:MM:SS.UUUUUU MESSAGES <message_file> -- 导出日志的路径和名称 <query> -- 导出的具体SQL ## 示例 --导出到DEL(非定界文件),如果第一个目录装不下,则装入到第二个目录 db2 export to /home/db2inst1/t1_1.del,/tmp/t1_2.del of del messages /tmp/msg.log select * from t1 --带修饰符导出 db2 export to /home/db2inst1/t2.del of del modified by --导出特殊数据类型 ----导出lob字段 db2 export to /tmp/t2.del of del lobs to /tmp/mylobs/ lobfile lobs1,lobs2 modified by lobsinfile messages /tmp/mylobs/lobs_msg.log select * from t2 ----导出xml字段 db2 export to /tmp/t3.del of del xml to /tmp/myxml/ xmlfile xml1,xml2 modified by xmlinsepfiles messages /tmp/myxml/xml_msg.log select * from t3 --使用修饰符导出文件,字符引用符('),列分隔符(;),字符集使用UTF-8,日期格式为yyyy-mm-dd hh:mm:ss tt db2 export to t4.del of del modified by chardel'' coldel; select * from t4 where id =10 db2 export to t5.del of del modified by modified by codepage = 1208 select c1,c2 from t5 db2 export to t6.del of del modified by timestampformat="yyyy-mm-dd hh:mm:ss tt" select c1,c2,c3 from t6 where c1<1000;

数据导入

  • IMPORT
    • IMPORT语法
    • 支持ASC,DEL,IXF,WFS文件格式
    • 要求具有sysadmin,dbadmin权限,或者select/insert/createtab/control权限
    • 导入模式:
      • create : 首先创建目标表和它的索引,然后将数据导入到新表中。只支持PC/IXF文件格式
      • insert : 追加数据,表必须已经存在
      • insert_update : 追加更新,表必须已经存在,并且定义了主键
      • replace : 删除表已有数据后,再插入数据
      • replace_create : 如果表不存在,则新建表结构和索引后,再插入数据,如果表存在,则删除数据后,在导入数据。只支持PC/IXF文件格
## 语法 IMPORT from <dumpfile_name> OF <file_type> LOBS from <lob_path> LOBFILE <lob_filename> XML from <xml_path> XMLFILE <xml_filename> MODIFIED BY <filetype_mod> { INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE } COMMITCOUNT {n | AUTOMATIC} ROWCOUNT n WARNINGCOUNT n RESTARTCOUNT n SKIPCOUNT n MESSAGES <message_file> <query> ## 参数释义 { INSERT | INSERT_UPDATE | REPLACE | REPLACE_CREATE } -- 导入方式 COMMITCOUNT {n | AUTOMATIC} -- 自动提交行数,可以有效的减少active log的使用 ROWCOUNT n -- 导入数据的数量(limit n),可以减少测试环境插入数据量 WARNINGCOUNT n -- 定义警告的记录数 RESTARTCOUNT n SKIPCOUNT n -- 出错时,重新开始的行数和导入的数据量 NOTIMEOUT -- 不超时 ## 示例 --批量插入50行一组,批量提交50000行提交一次 db2 import from t1.del of del COMMITCOUNT 50000 MODIFIED BY COMPOUND =50 insert into t1 --插入数据出错后,从100行重新开始,插入10000行数据 db2 import from t2.del of del RESTARTCOUNT 100 ROWCOUNT 10000 insert into t2 --插入出错10次后,停止数据插入 db2 import from t3.del of del WARNINGCOUNT 100 insert into t3 --插入出错10次后,停止数据插入,但是不发出警告 db2 import from t4.del of del MODIFIED BY NOROWWARNINGS WARNINGCOUNT 100 insert into t4 --特殊数据类型导入 db2 import from t5.del of del LOBS FROM '/tmp' insert into t5 db2 import from t6.del of del XML FROM '/tmp' insert into t6 --导入不超时 db2 import from t7.del of del NOTIMEOUT insert into t7
  • LOAD
    • LOAD语法
    • 不需要写日志(或很少日志),不做约束检查,不触发trigger,特别适合大数据导入。
    • 要求具有sysadmin,dbadmin权限,或者select/insert/createtab/control权限
## 示例 --导入数据 db2 load from t1.del of del insert into t1 --导入自增 db2 load from t2.del of del MODIFIED BY IDENTITYOVERRIDE insert into t2 --不符合表结构的数据输出到dumpfile中,异常数据(违反约束)输出到exception db2 load from t3.del of del modified by dumpfile=/tmp/t3.dump warningcount 100 messages megs.log insert into t3 for exception t3.exp
最后修改时间:2024-07-22 20:26:54
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论