学术文化网:本站代理期刊可作为职称及学位评审依据;并代写(职称、本科、硕士、博士)论文,代写代发论文一条龙服务;保证原创,保证质量,100%通过,保密服务

学术文化网

重点推荐省级国家级期刊、北大中文核心、CSSCI、EI、SCI发表,稳妥操作,速度快,包发表。有意向联系客服咨询。
论文代写:十年专业服务品质,全部由期刊编辑、硕士、博士撰写;保证原创、版权归您;保证通过、否则全额退款。代写论文申请表
论文发表:与百家优秀期刊合作,代理审核组稿,论文发表涵盖所有专业领域,全部正刊,保证出刊,否则全额退款。代写代发论文申请表
业务合作:因业务发展需要,诚招优秀写手合作,要求硕士以上学历,不限专业,另诚征优秀期刊代理合作,具体详谈。QQ:415835425 代写论文写手申请表
当前位置: 主页 > 工科论文

DB2数据库代码页转换技术研究

 DB2 数据库代码页转换技术研究
冯洁,楼培德*
作者简介:冯洁,(1986-),女,硕士研究生,计算机软件. E-mail: fengjie1217bupt@gmail.com
(北京邮电大学信息与通信工程学院,北京 100876)
摘要5 :本文主要研究DB2 数据库代码页转换技术,目的在于对DB2 通过import/ingest 命令
进行数据导入过程中的代码页转换功能进行研发及测试。首先概括介绍代码页及其分类,以
及DB2 数据库中代码页转换常用类型:数据库代码页、应用程序代码页、输入数据代码页;
接着用SQL 语句详细描述上述各种代码页的设置方法及设置要点;最后重点描述不同代码页
之间的转换原则,根据原则通过不同实例展现转换过程及转换结果。通过以上过程,可以判
10 断测试结果。
关键词:数据库;DB2;代码页
中图分类号:TP311 计算机软件
 0 引言
DB2 数据库是IBM 公司生产的一种关系型数据库管理系统,主要应用于大型应用系统,
具有较好的可伸缩性,可支持从大型机到单用户环境,应用于OS/2、Windows 等平台下。 DB2
30 提供了高层次的数据利用性、完整性、安全性、可恢复性,以及小规模到大规模应用程序的
执行能力,具有与平台无关的基本功能和SQL 命令[1]。
DB2 作为一种并发性、稳定性、扩展性良好的数据库,广泛的应用于各种领域,尤其
是金融行业。在此前提下,DB2 数据库在多国语言环境下配置代码页转换的问题就显得尤
为重要和关键。DB2 中,LOAD 与 IMPORT 作为重要的导入数据的工具,有着很重要的
35 作用。理想情况下,为了获得最佳性能,应用程序与从该应用程序调用的语句始终应使用相
同的代码页。在一些场景中,我们需要导入一些和数据库本身的 codepage 不一致的数据,
这个时候就需要 codepage 转换了。DB2 产品支持代码页转换,从而允许应用程序和数据
库使用不同的代码页。所以研究DB2 在数据导入过程中在不同代码页之间的转换问题是十
分必要的,本文对这些原则进行了归纳和举例[2]。
40 1 DB2 代码页介绍与实例
1.1 代码页及分类
代码页是字符集编码的别名,也称"内码表"。它是对于字符和 Unicode 数据的位模式
 的定义,此模式代表特定字母、数字或符号(例如0x20 代表一个空格,而0x74 代表字符“t”)。
代码页可分为单字节、双字节、多字节代码页[3]。
单字节代码页(有时称作单字节字符集或SBCS: 45 Single Byte Code Set)是一个最多可
以容纳256(28)个代码点的代码页。SBCS 中代码点的实际数目可能要少一些。例如,对于
地域标识符US 和代码集 ISO 8859-1,AIX 上的地区en_US 就是SBCS 代码页819。
双字节代码页(有时称作双字节字符集或 DBCS: Double Byte Code Set)是一个最多
可以容纳65536 (216)个代码点的代码页。DBCS 中代码点的实际数目可能要少一些。例如,
50 对于地域标识符JP 和代码集IBM-932,AIX 上的地区Ja_JP 就是DBCS 代码页932。
多字节代码页(有时称作多字节字符集或MBCS: Multi Byte Code Set)也称为复合或
混合代码页包含不止一个代码页。例如,Extended UNIX Code(EUC)代码页可以包含多达
四个不同的代码页,其中第一个代码页总是单字节的。例如,用于日语的IBM-eucJP(代码
页954)根据 EUC 编码规则引用日本工业标准(Japanese Industrial Standard)字符的编码[4]。
55
表1 DB2 常用代码页举例
Tab. 1 DB2 commonly used codepage example
代码集 分组 含义
1208 N-1 Unicode UTF-8
819 S-1 ISO8859-1 Western European
850 S-1 IBM-850 Western European
950 D-2 Traditional Chinese Big5
964 D-2 IBM-eucTW
1383 D-4 Simplified Chinese EUC
1386 D-4 Simplified Chinese GBK
1.2 DB2 中数据库代码页、数据库代码页及输入代码页
60 Database codepage 数据库代码页:可以指定用户所使用数据库的类型。
Application codepage 应用程序代码页:继承操作系统,常见的数据处理将在这个代码页
数据库,并将接收/发送数据使用此代码在代码覆盖。应用程序代码也将被用来处理用户输
入的命令[5]。
Input codepage 输入代码页:用户输入的数据所使用的代码页类型。
65 Target codepage 目标代码页:数据导入过程中经不同代码页转化后生成的最终用户见到
的代码页[6]。
2 DB2 代码页转换原则与实例
2.1 建立Database codepage
1、建立不同类型的数据库
70 db2 create db db819 using codeset ISO8859-1 territory US
db2 create db db850 using codeset IBM-850 territory US
db2 create db db950 using codeset big5 territory tw
db2 create db db1383 using codeset IBM-eucCN territory CN
db2 create db db1386 using codeset GBK territory CN
75 db2 create db db1208 using codeset UTF-8 territory US
根据以上SQL 语句,可以创建不同类型的数据库用于数据的导入,每个数据库创建时
间大概为30 分钟。
2、查看当前情况下数据库的配置
 db2 get db cfg for testdb | grep 'Database code page'
由于testdb 80 默认用的是1208 数据库,则查询结果为:Database codepage = 1208
2.2 设置Application codepage
db2set db2codepage=819 (Set application codepage is 819)
db2set db2codepage=850 (Set application codepage is 850)
db2set db2codepage=950 (Set application codepage is 950)
85 db2set db2codepage=964 (Set application codepage is 964)
db2set db2codepage=1383 (Set application codepage is 1383)
db2set db2codepage=1386 (Set application codepage is 1386)
db2set db2codepage=1208 (Set application codepage is 1208)
根据以上SQL 语句,可以创建不同类型的应用程序代码页用于数据的导入,设置完成
90 以后执行db2 terminate,这样设置的应用程序代码页才会生效[7]。
2.3 设置Input codepage
1、首先,建立一个表使数据文件导入对应的表中如:db2 "create tab1 (c1 char(5))",但
是注意创建表之前一定要先删除原有的表,以免重复db2 "drop table tab1"
2、导入数据文件
95 db2 "import to data819.del of del modified by codepage=819 replace into tab1"
db2 "import to data850.del of del modified by codepage=850 replace into tab1"
db2 "import to data950.del of del modified by codepage=950 replace into tab1"
db2 "import to data1208.del of del modified by codepage=1208 replace into tab1"
db2 "import to data1383.del of del modified by codepage=1383 replace into tab1"
100 db2 "import to data1386.del of del modified by codepage=1386 replace into tab1"
以del 结尾的表示数据文件,数据文件的命名显示了数据文件的类型,也就是通过何种
数据库生成的数据文件。
3、查看结果
db2 "select hex(c1)as c1 from tab1"
105 db2 "select * from tab1"
如果通过第一种方式查看结果,则以十六进制的形式查看;如果以第二种方式查看,则
以十六进制数所表示的具体字符查看。通常在测试程序里面,选择第一种查看方式。这是由
于,不同的代码页的字符域不同,如1386 代码页能表示“屼”,“坍”等字,而819 代码页
代码页确不能表示这些字符;或者同样的字符在不同的代码页里面是不同的十六进制数表示
110 的。故根据十六进制数查看转换结果,是最好的方式[8]。
2.4 不同Database codepage、Application codepage、Input codepage 之间的数
据导入
  在Database codepage、Application codepage、Input codepage 都设定的情况下,通过
import/ingest 命令导入数据的代码页由Input codepage 输入代码页决定。
 表2 导入数据的代码页由Input codepage 决定
Tab.2 Target codepage is determined by Input codepage
Input codepage
/Data file codepage Application codepage Database codepage Target codepage
819 819/850/1208 819/850/1208 819
850 819/850/1208 819/850/1208 850
950 950/964/1208 950/964/1208 950
964 950/964/1208 950/964/1208 964
1383 1383/1386/1208 1383/1386/1208 1383
1386 1383/1386/1208 1383/1386/1208 1386
125
EX: 选取上表中最后一行进行验证,设置Database codepage = 1208; Application
codepage = 1383; Input codepage = 1386,这样代码页由输入的1386 可以正确转化为用户在
1208 数据库中看到的,生成的字符由1386 代码页所决定的。
130 表3 数据文件data1386.del 和data1208.del
Tab.3 data file data1386.del and data1208.del
数据文件为一列字符类型数据
两个数据文件表现出字符相同
1386 代码页十六进制数
data1386.del
1208 代码页十六进制数
data1208.del
1
a
A

*
31
61
41
C4E3
2A
31
61
41
E4BDA0
2A
1. 设置Database codepage 为1208
db2 create db db1208 using codeset UTF-8 territory US
135 2. 设置Application codepage 为1383
db2set db2codepage=1383
db2 terminate
3. 连接到Database
db2 connect to db1208
140 4. 创建表tab1 数据为char 类型一列
db2 "drop table tab1"
db2 "create table tab1 (c1 char(5))"
5. 在表tab1 中导入数据的input codepage 为1386
db2 "import to data1386.del of del modified by codepage=1386 replace into tab1"
145 6. 查看结果
db2 "select hex(c1) as c1 from tab1"
C1
--------------------
31202020202020202020
150 61202020202020202020
41202020202020202020
E4BDA020202020202020
2A202020202020202020
5 record(s) selected.
155
db2 "select * from tab1"
C1
 160 a
A

*
5 record(s) selected.
165 这样在1208 的数据库里,也可以看到“你”不是由原来数据文件data1386.del 中的C4E3
来表示,而是以E4BDA0 来表示的。而且,这样转换后可以在1208 数据库里正确的显示“你”
表示转换成功。

学术论文网Tag:代写论文 代写代发论文 论文发表 代发论文

本站郑重声明:
  1、我们与数十所知名高校博士强强联手,保持常年稳定合作关系,论文质量更有保证;;
  2、写作领域涉及所有专业,实力操作,出稿更快,质量更高,通过率100%;
  3、所有代写文章,全部原创,包检测,保证质量,后续免费修改,保证通过;
  4、信誉实力服务,专业代写毕业论文,职称论文,硕博士论文,留学生论文,成熟操作;
------分隔线----------------------------
栏目列表
联系我们
服务承诺
推荐内容