`
han_zw
  • 浏览: 174413 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

DB2 Load数据装入学习笔记

阅读更多

1. 引言
      这段时间一直在忙一个基于DB2的项目,其中一部分工作涉及到DB2数据的导入。我们知道oracle提供了sqlloader程序完成大数据量的快速导入,DB2是和oracle最相似的数据库,所以DB2也提供了数据导入的实用程序,而且还是两个,分别是import和load,因为import的实质还是要执行sql语句完成数据的导入,所以速度相对较慢。Load是直接将格式化的页写入数据库,对于大数据量的导入,load程序更快。但是load实用程序不会触发触发器。并且load时除了验证索引唯一性约束之外,不执行其他的约束检查,这样会对数据库的数据完整性造成一些影响。如果能保证数据来源可靠的话,load是个不错的选择。接下来就简单说一下load实用程序的使用。


2. 概述
        Load 的过程分为四个阶段:装入,构建,删除,索引复制。如下图:

流程

Load有四种装入方式,分别是:
REPLACE:这种方式下会删除目标表数据,用并用输入数据填充该表。
INSERT:目标表原有数据不做修改,将输入数据追加到目标表之后。
TERMINATE:装载失败后,可以通过该方式回滚失败的装入操作。
RESTART:已终端的装入操作将继续(我没有试过这种方式)。

Load可以装入的数据格式包括IXF——也就是DB2 export程序推荐的那种数据格式,是二进制的。这种数据导入也最方便;DEL——就是分界符的ASCILL文件,DB2默认的是用逗号(,)作为字段列的分隔符,用双引号(“)作为记录行的分隔符;ASC——非定界符的ASCII文件,load时需要指定列的起止位置;CURSOR——游标,我没用过。


3. 语法及参数介绍
        Load程序的语法参数还是相当复杂的,现在虽然在用这个程序了,但是有些参数还是没搞明白。在这里我拣着主要的&&我明白的参数介绍一下。基本上能够满足一般的装入操作要求。
 因为语法实在是很繁琐,我不得不贴一张官方的大图出来了。

命令

部分参数介绍:
FROM
设定装入数据的来源,如果是数据源来自于多个文件,则文件之间可以用逗号分开。如:
Db2  Load  from “E:\tmp\test_file_001.dat”,”E:\tmp\test_file_002.dat” ……
OF filetype
指定数据文件的类型,也就是前面提到过的四种类型,IXF,DEL,ASC,CURSOR.
Modify by file-type-mode
指定文件类型修饰符。支持的文件类型修饰符相当多,这里只列举一部分我测试过的。
修饰符 说明 适用的文件类型
Codepage=x 指定装入数据文件的codepage(码页),load程序会将数据文件从指定的codepage转换到数据库的codepage,例如codepage=1252,这个1252是US的codepage,1386是简体中文GBK的codepage. 所有
Dateformat=”x” 这个参数对于ASC和DEL文件相当有用,因为这两种文件存储的都是ascill文件,没有数据结构信息,如果对应目标表中的列是date类型时,就需要指定数据文件中的日期的格式了。常用的有dateformat=”YYYYMMDD”或者dateformat=”YYYY-MM-DD”等.此处注意一点:在命令行中执行时需要对双引号进行转义,否则会提示指定的dateformat无效. 所有
Dumpfile=”x” 在装入数据库过程中,如果装入失败的记录,例如记录字段长度超长,这时会将这条失败记录写到dumpfile指定的文件中,文件是追加式的。本人在适用时发现这个指定的文件指的是服务器的路径,也就是说当我们从客户端A执行load命令装入数据到服务器B时,指定的dumpfile其实是B主机上的路径。 所有
Timestampformat=”x” 这个也很实用,是用来指定时间戳类型的数据列的格式,例如timestampformat=”YYYYMMDDHHMMSS”,看着很奇怪,因为月份MM和分钟的MM是一样的,分钟并不是像oracle中的MI。我理解不了DB2为啥弄成这样,不过事实证明像我那样设置是没有问题的。 所有
Striptblanks 将数据装入到一个变长列时,会截断尾部空格,若未指定则将保留空格。 ASC
Chardelx 设定记录行分隔符,例如chardel; 表示以分号作为换行标识.另外一些无法输入的字符可以通过十六进制码来表示,如chardel0x0D0A表示以回车换行作为行分隔符. DEL
coldelx 设定数据文件中的列分隔符,可以直接输入分隔符,也可以用十六进制表示。如coldel, coldel0x09 DEL
Keepblanks 保留char,varchar,long varchar,clob类型的每个字段的首尾空格。如不设置,则会出去定界符之间的首尾空格,如果为空白,则会在对应列中插入NULL DEL

METHOD
 L 指定要装入文件的列的起止位置,用于非定界的ASC文件。从1开始计数,起止位置的数字间通过空格分隔,字段间通过逗号分隔。例如
  METHOD L (1 3,4 9,10 15)
 N  这个参数好像是只应用于IXF或者CURSOR类型的数据文件,我没有试过。
 P 指定装入文件的列的编号,可以通过这个调整转入数据文件的对应关系。例如
  METHOD P (1,3,4,2)
ROWCOUNT n
 指定要装入的数据文件的物理记录行数。允许用户只装入前面n行。
WARNINGCOUNT n
 指定装入操作过程中允许的警告次数,超过该次数后装入操作失败。如果不设置或者设置为0那么无论有多少条记录告警,装入操作都将继续。
TEMPFILES PATH temp-filespath
 指定装入过程中用到的临时路径,指的是服务器端的路径。
装入方式
 INSERT\REPLACE\TERMINATE\RESTART
INTO tabname
 指定要装入到的数据库表。
Insert_column
指定数据要插入到的列名,列名之间用逗号分隔。
FOR EXCEPTION table-name
指定要讲加载错误行复制到异常表名,该异常表是指加载目标数据库中的表。
ALLOW NO ACCESS
Load程序在装载过程中锁定目标表,是目标表处于“正在装载”状态,ALLOW NO ACCESS 是默认行为,对于REPLACE加载的load命令,allow no access是唯一有效的选项。
ALLOW READ ACCESS
目标表在装载过程中仍然被置为“正在装载”状态,不过装载之前的数据仍然可以访问,进行read操作。

 

4. 命令举例
    接下来就列举几个例子。
4.1 加载定界的ascill文件,也就是分隔符的数据文件

db2 LOAD FROM "E:\ data\src_001.dat","E:\data\src_002.dat" OF DEL MODIFIED BY dateformat=\"YYYY-MM-DD\" timestampformat=\"YYYYMMDDHHMMSS\" CHARDEL0x0D0A coldel# dumpfile="E:\error\data.bad" METHOD P (1, 2, 3,4,5) ROWCOUNT 400 MESSAGES "E:\message\message.log" TEMPFILES PATH "E:\tmp" REPLACE INTO TEST_TAB (ID, NAME, ADDRESS,BIRTHDAY,createtime) NONRECOVERABLE INDEXING MODE AUTOSELECT  SET INTEGRITY PENDING CASCADE IMMEDIATE

 4.2 加载非定界的ascill文件

db2 LOAD FROM "E:\data\src_001.dat" OF ASC MODIFIED BY dateformat=\"YYYY-MM-DD\" timestampformat=\"YYYYMMDDHHMMSS\"  striptblanks dumpfile="E:\data\data.bad" METHOD L (1 5,6 10,11 20,21 35,36 50) ROWCOUNT 400 MESSAGES "E:\message\message.log" TEMPFILES PATH "E:\tmp" REPLACE INTO TEST_TAB (ID, NAME, ADDRESS,BIRTHDAY,createtime) NONRECOVERABLE INDEXING MODE AUTOSELECT

 

 

注:定长的文件加载时需要指定每个列的起止位置,之间用空格分隔,列之间用逗号分隔。

因为load程序的参数很多,不能一一描述,不过以上这些对于常用的操作有这些基本也就够用了。

  • 大小: 9.1 KB
  • 大小: 107.9 KB
分享到:
评论

相关推荐

    db2应用基础学习笔记

    "db2应用基础学习笔记"涵盖了DB2的基本概念、安装配置、数据操作、查询优化、安全性及备份恢复等多个方面,旨在帮助初学者快速入门并掌握DB2的基础使用。 1. **基本概念**:DB2是一款支持SQL语言的数据库系统,它...

    DB2数据库学习笔记

    ### DB2数据库学习笔记知识点详解 #### 一、DB2系统架构及管理命令 ##### 1. DB2的层级概念 - **域**: 指的是DB2的管理范围,通常对应于一个物理服务器或者一组逻辑相关的服务器。 - **实例**: 实例是在一个操作...

    db2学习笔记(包括常用命令)

    ### DB2 学习笔记详解 #### 一、DB2系统架构与管理 DB2,全称为Database 2,是IBM公司开发的一款关系型数据库管理系统。它具备强大的数据处理能力和高度的安全性,广泛应用于企业级的数据管理和分析。DB2的设计...

    DB2 Load utility

    DB2 Load Utility是IBM在大型主机环境中,如Z/OS操作系统上用于数据库批量加载的数据处理工具。这个实用程序被设计用来高效地将大量数据插入到DB2数据库中,尤其适用于初始化数据库或者进行大规模数据更新。它能够...

    db2 Load锁表 后解锁详解

    本文将详细介绍如何在DB2环境下处理Load数据后可能产生的表锁问题,并提供解决方案。 #### 二、Load操作与表锁现象 **1. Load操作概述** - **定义**:DB2中的`LOAD`命令用于快速向表中插入大量数据。与传统的`...

    DB2安装配置学习笔记.doc

    DB2 安装配置学习笔记 DB2 安装配置学习笔记是一份关于 DB2 在 Unix 或 Linux 上的安装配置的学习笔记,涵盖了安装前的准备工作、DB2 安装、license 注册等多个方面的知识点。 安装前的准备工作 在安装 DB2 之前...

    DB2基础认证考试学习笔记-数据库规划.docx

    DB2基础认证考试的学习笔记主要聚焦于数据库规划,特别是针对DB2 11.1版本。这个教程旨在帮助备考者理解和掌握DB2的基础知识,包括产品版本、功能、工具,以及不同类型的数据应用,如在线事务处理(OLTP)、数据仓库/...

    DB2UDBV8.1管理学习笔记.pdf

    DB2 Universal Database (DB2 UDB) V8.1 是IBM推出的一款企业级数据库管理系统,其管理和学习笔记主要涵盖以下几个核心知识点: 1. **实例(Instance)与数据库(Database)**: 在DB2中,一个操作系统可以运行多个实例...

    db2 学习笔记

    db2学习笔记

    DB2导数据字典

    DB2 数据字典是数据库管理系统中的一个重要组成部分,它包含了关于数据库结构、权限、索引、表、视图、存储过程等各种元数据的信息。在DB2中,数据字典是系统自动维护的一组内部表和视图,用于提供关于数据库对象和...

    db2数据库学习笔记.pdf

    db2数据库学习笔记.pdf

    DB2学习笔记.docx

    DB2学习笔记.docxDB2学习笔记.docx

    DB2 DBA 学习笔记

    DB2学习笔记,有些地方可能写的很乌龙,加上网上搜索汇集的,反正忘记了的命令上来搜搜看就是了。

    DB2 700学习笔记&试题

    DB2 700学习笔记及试题资源是针对DB2认证考试700的备考材料,旨在帮助用户深入理解和掌握DB2的核心功能、管理、优化以及问题解决技巧。 一、DB2基础 DB2作为一款强大的数据库系统,支持SQL标准,提供了丰富的数据...

    db2 学习笔记 权限 编目等

    本篇学习笔记主要探讨了这两个方面。 首先,DB2权限系统提供了一套严谨的权限级别,确保了对数据库的访问和操作得到适当控制。以下是五种主要的权限: 1. SYSADM(系统管理员)权限:这是最高级别的权限,类似于...

Global site tag (gtag.js) - Google Analytics