使用sqlldr导入EBCDIC格式数据并新增Oracle字符集要点.pdf
文本预览下载声明
第1章 数据及环境准备
1.1 数据库准备
建立数据库表EBCDIC_IMPORT_TEST,字段ID、CONTENTS ,建表语句
见下:
create table EBCDIC_IMPORT_TEST(ID VARCHAR2 (8), CONTENTS
VARCHAR2 (100));
注:oracle 版本为11G Windows 版
1.2 待导入EBCDIC 码文件准备
内容为E 码的ABCD,瓛瓛国国国困困困
1.3 Sqlldr 相关准备
1.3.1 CTL 文件
OPTIONS (skip=0) LOAD DATA CHARACTERSET ZHS16DBCS INFILE
E:/test/ebcdic.dat APPEND INTO TABLE EBCDIC_IMPORT_TEST FIELDS TERMINATED BY
, TRAILING NULLCOLS (ID,CONTENTS)
注:先使用系统自带ZHS16DBCS 字符集验证。
1.3.2 Sqlldr 执行准备
本次使用java 调用验证,也可直接使用命令。
Runtime.getRuntime().exec(sqlldr); 其中sqlldr 由程序拼装。
第2章 导入及验证过程
2.1 使用系统自带字符集导入
使用系统自带字符集ZHS16DBCS 导入。结果如下,可见“瓛”字乱码,应
该是oracle 自带字符集不全,需要自定义字符集支持。
2.2 使用Oracle Locale Builder 新增自定义字符集
2.2.1 一般信息
使用“显示现有定义”,载入现有字符集ZHS16DBCS ,其字符集ID 为853,
字符集名为ZHS16DBCS 。
修改其名称为ZHS16DBCSTANSUN 。
2.2.2 类型说明
2.2.2.1 原移出字符配置信息 “e / ”
因oracle 字符集原始定义文件(扩展名 nlt )使用类XML 格式定义,DTD
文件为lx.dtd 。故字符 “”会引发解析异常,导致无法生成oracle 字符集执行文
件(nlb )。原配置信息见下图:
2.2.2.2 修改移出字符为0xe
2.2.3 字符数据
2.2.3.1 查找待新增字符的A 码和E 码的编码定义
原字符集不支持“瓛”字,需进行扩充,本次仅以“瓛”为例,演示扩充过
程:
查询“瓛”字的A 码和E 码定义,结果如下,A 码为74DB,E 码为A37A,
详见下图:
ASCII 码表:
unicode 十
gbk 十六进制 区位码 汉字
六进制
74db ad92 瓛
56f0 c0a7 3207 困
56fd b9fa 2590 国
IBM Code Page 1388 码表:
2.2.3.2 新增 “瓛”字符定义
新建-录入-添加
2.2.4 另存为NLT 文件
2.2.4.1 文件-另存为。
注:保存时字符集ID 系统自动定义
2.2.4.2 选择保存位置
2.2.4.3 保存
另存为后,NLT 文件变为lx21f41.nlt,见下图:
2.2.4.4 生成NLB 文件
注:需要选择上步保存的位置。
生成成功:
执行文件清单:
2.2.4.5 将生成文件 (NLB 和引导文件)复制到Oracle NLS 目录
文件目录为F:\app\*** \product\ 11.2.0\dbhome_1\nls 。首先备份原data 目录:
拷贝文件lx0boot.nlb 、lx1boot.nlb 、lx21f41 到data 目录。
注:lx0boot.nlb、lx1boot.nlb 需要覆盖。
2.3 使用新增字符集导入
显示全部