取mysql clob 乱码_完美解决dul处理clob字段乱码问题 – 提供7*24专业数据库(Oracle,SQL Server,MySQL等)恢复和Oracle技术服务@Tel:+86 1342...

使用过dul的人都知道,dul在处理clob字段的时候,经常性出现乱码,而且官方没有提供好的处理方法,通过不断的测试折腾终于在2013年春节解决了2012年困惑在我心中的疑惑,不再因为dul不可以处理clob而觉得odu/aul更加高级。这个算是2013年给自己的第一份ORACLE数据库恢复方面大礼包.

在dul中,虽然提供了LDR_OUTPUT_IN_UTF8选项,让所有的clob变为UTF8,但是在实际测试中,没有成功.这里对于clob字段处理结果对比:

配置init.dul参数

osd_big_endian_flag=false

osd_dba_file_bits=10

osd_c_struct_alignment=32

osd_file_leader_size=1

osd_word_size = 32

feedback = 1000

dc_columns=2000000

dc_tables=10000

dc_objects=1000000

dc_users=400

dc_segments=100000

USE_LOB_FILES =TRUE

control_file = control.dul

LDR_ENCLOSE_CHAR=|

db_block_size=8192

export_mode=FALSE

compatible=11

正常情况下测试clob字段

[oracle@xifenfei dul]$ ./dul

Data UnLoader: 10.2.0.5.20 - Internal Only - on Sat Jan 19 00:19:05 2013

with 64-bit io functions

Copyright (c) 1994 2013 Bernard van Duijnen All rights reserved.

Strictly Oracle Internal Use Only

DUL> unload table chf.EVT_T_COMMON_LOG;

. unloading (index organized) table LOB024001aa

DUL: Warning: Recreating file "LOB024001aa.ctl"

0 rows unloaded

. unloading (index organized) table LOB024001da

DUL: Warning: Recreating file "LOB024001da.ctl"

0 rows unloaded

. unloading (index organized) table LOB0240020a

DUL: Warning: Recreating file "LOB0240020a.ctl"

0 rows unloaded

. unloading (index organized) table LOB0240023a

DUL: Warning: Recreating file "LOB0240023a.ctl"

0 rows unloaded

. unloading (index organized) table LOB0240026a

DUL: Warning: Recreating file "LOB0240026a.ctl"

0 rows unloaded

Preparing lob metadata from lob index

Reading LOB024001aa.dat 0 entries loaded and sorted 0 entries

Preparing lob metadata from lob index

Reading LOB024001da.dat 0 entries loaded and sorted 0 entries

Preparing lob metadata from lob index

Reading LOB0240020a.dat 0 entries loaded and sorted 0 entries

Preparing lob metadata from lob index

Reading LOB0240023a.dat 0 entries loaded and sorted 0 entries

Preparing lob metadata from lob index

Reading LOB0240026a.dat 0 entries loaded and sorted 0 entries

. unloading table EVT_T_COMMON_LOG

DUL: Warning: Recreating file "CHF_EVT_T_COMMON_LOG.ctl"

1863 rows unloaded

--修改CHF_EVT_T_COMMON_LOG.ctl中的导入表名为TEST.T_TEST

--创建测试表

SQL> create table t_test as

2 select * from chf.EVT_T_COMMON_LOG where 1=0;

Table created.

--导入数据

[oracle@xifenfei dul]$ sqlldr test/test control=CHF_EVT_T_COMMON_LOG.ctl

SQL*Loader: Release 11.2.0.3.0 - Production on Fri Jan 18 23:50:32 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

Commit point reached - logical record count 64

Commit point reached - logical record count 128

…………

Commit point reached - logical record count 1856

Commit point reached - logical record count 1863

--测试数据是否乱码

SQL> desc chf.EVT_T_COMMON_LOG

Name Null? Type

----------------------------------------- -------- ----------------------------

ID NOT NULL VARCHAR2(64)

CASES_OF_STATISTICAL_SITATION CLOB

…………

DEPARTMENT_ID VARCHAR2(40)

MOTIFY_MAN_ID VARCHAR2(40)

SQL> select CASES_OF_STATISTICAL_SITATION from t_test where rownum<3;

CASES_OF_STATISTICAL_SITATION

--------------------------------------------------------------------------------

b*kb

_SfZz

通过试验证明,在dul处理clob字段的时候,很容易出现乱码,因为这里涉及到很多中情况(NLS_LANG,LANG,LDR_OUTPUT_IN_UTF8参数等),经过了多次试验,均不能成功,这里就是为了给出来一个大概的结论:dul在正常情况下不能完美的处理非英文的clob

修改后lob字段文件属性后测试clob字段

--修改CHF_EVT_T_COMMON_LOG.ctl中的导入表名为TEST.EVT_T_COMMON_LOG

--导入数据

[oracle@xifenfei dul]$ sqlldr test/test control=CHF_EVT_T_COMMON_LOG.ctl

SQL*Loader: Release 11.2.0.3.0 - Production on Fri Jan 18 23:50:32 2013

Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.

Commit point reached - logical record count 64

Commit point reached - logical record count 128

…………

Commit point reached - logical record count 1856

Commit point reached - logical record count 1863

--测试数据是否乱码

SQL> select CASES_OF_STATISTICAL_SITATION from EVT_T_COMMON_LOG where rownum<3;

CASES_OF_STATISTICAL_SITATION

--------------------------------------------------------------------------------

1、案件统计情况截止至交班时间C时间 0 分),今日立难点问题C7,国庆北路桂门岭社区丽都花园路口,多次上

测试证明:修改了clob文件的相关属性后,完美实现dul处理clob乱码问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OracleMySQLSQL Server是三种常见的关系型数据库管理系统(RDBMS),它们在数据类型方面存在一些区别。以下是它们主要的数据类型及其区别: 1. 字符串类型: - Oracle:包括CHAR、VARCHAR2、NCHAR、NVARCHAR2等。 - MySQL:包括CHAR、VARCHAR、TINYTEXT、TEXT、LONGTEXT等。 - SQL Server:包括CHAR、VARCHAR、NCHAR、NVARCHAR、TEXT等。 2. 数值类型: - Oracle:包括NUMBER、INTEGER、FLOAT、DOUBLE PRECISION等。 - MySQL:包括INT、BIGINT、FLOAT、DOUBLE等。 - SQL Server:包括INT、BIGINT、FLOAT、REAL等。 3. 日期和时间类型: - Oracle:包括DATE、TIMESTAMP、INTERVAL等。 - MySQL:包括DATE、TIME、DATETIME等。 - SQL Server:包括DATE、TIME、DATETIME等。 4. 二进制类型: - Oracle:包括BLOB、RAW等。 - MySQL:包括BLOB、BINARY等。 - SQL Server:包括BLOB、BINARY等。 5. 布尔类型: - Oracle:不支持原生的布尔类型,可以使用NUMBER(1)或CHAR(1)来表示。 - MySQL:支持BOOL或BOOLEAN类型。 - SQL Server:不支持原生的布尔类型,可以使用BIT来表示。 6. 其他特殊类型: - Oracle:包括CLOB(大文本)、BFILE(二进制文件)等。 - MySQL:包括ENUM、SET等。 - SQL Server:包括XML、CURSOR等。 需要注意的是,尽管这些数据库有一些相同的数据类型,但在具体实现和功能上可能存在一些差异。此外,每个数据库还可能支持一些特定的扩展类型或自定义类型。 在选择数据库和设计表结构时,应该根据具体的应用需求和数据库的特性来选择合适的数据类型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值