社区
Oracle 高级技术
帖子详情
寻找“dmp文件修改相应字节,改变倒入imp字符集”
youren537
2003-09-11 05:45:20
以前在论坛上看到这篇文章,现在怎么都找不到,请大家替我找找。
...全文
113
2
打赏
收藏
寻找“dmp文件修改相应字节,改变倒入imp字符集”
以前在论坛上看到这篇文章,现在怎么都找不到,请大家替我找找。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dajian2000
2003-09-27
打赏
举报
回复
from csdn.net
使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。这里需要一个2进制文件编辑工具即可,如uedit32。用编辑方式打开导出的dmp文件,获取2、3字节的内容,如00 01,先把它转换为10进制数,为1,使用函数NLS_CHARSET_NAME即可获得该字符集:(ultraedit 打开几百M到上G的文件很慢,我试了winHex,哪个速度啊,闪电!)
SQL> select nls_charset_name(1) from dual;
NLS_CHARSET_NAME(1)
-------------------
US7ASCII
可以知道该dmp文件的字符集为US7ASCII,如果需要把该dmp文件的字符集换成ZHS16GBK,则需要用NLS_CHARSET_ID获取该字符集的编号:
SQL> select nls_charset_id('zhs16gbk') from dual;
NLS_CHARSET_ID('ZHS16GBK')
--------------------------
852
把852换成16进制数,为354,把2、3字节的00 01换成03 54,即完成了把该dmp文件字符集从us7ascii到zhs16gbk的转化,这样,再把该dmp文件导入到zhs16gbk字符集的数据库就可以了。(注意,十进制数与十六进制之间的转换,想明白其中的道理)
birdinrain
2003-09-27
打赏
举报
回复
数据小修改到无所谓,大的时候就很麻烦。
为什么不在导入后修改呢
数据库服务器
字符集
更改步骤
10 数据库服务器
字符集
更改步骤 问题描述: 在客户端插入字符“咪咪”,从数据库中查询显示时出现乱码 处理步骤: 10.1 对数据库做全库导出,备份全库数据,以防故障发生 首先设定客户端的
字符集
,必须以ZHS16GBK的
字符集
导出,然后才能在更改失败后顺利
倒入
新建的库。 #setenv NLS_LANG "S
IMP
LIFIED CHINESE_CHINA.ZHS16GBK"; #stty -istrip -parity cs8; #setenv LANG zh 拟在/sybdata(磁盘阵列)下建立一个目录orabak,用于存放
dmp
文件
。 #mkdir /sybdata/orabak #chown oracle:oinstall /sybdata/orabak #su – oracle #cd /sybdata/orabak %exp system/manager@hnsdh file=hnsdh_2005-8-17 log=hnsdh_exp_2005-8-17 full=y (此处命名为示例,以实施当日日期为准) 察看日志结尾,以判定导出是否成功。 #cat hnsdh_2005-8-17.
dmp
| od -x | head 看第二和第三个
字节
组成的十六进制数是多少可判断导出
文件
的
字符集
。 示例如下 #cat example.
dmp
| od -x | head 0000000 0303 5445 5850 4f52 543a 5630 392e 3032 。。。 0000220 646d 7000 0000 0000 0000 0000 0000 0000 十六进制的0354化为十进制为852,参造下表 NLS_CHARSET_ID NLS_CHARSET_NAME HEX_ID -------------- ------------------------------ ------------- 1 US7ASCII 1 2 WE8DEC 2 3 WE8HP 3 4 US8PC437 4 5 WE8EBCDIC37 5 6 WE8EBCDIC500 6 7 WE8EBCDIC1140 7 8 WE8EBCDIC285 8 ................... 850 ZHS16CGB231280 352 851 ZHS16MACCGB231280 353 852 ZHS16GBK 354 853 ZHS16DBCS 355 860 ZHT32EUC 35c 861 ZHT32SOPS 35d 862 ZHT16DBT 35e 863 ZHT32TRIS 35f 864 ZHT16DBCS 360 865 ZHT16BIG5 361 866 ZHT16CCDC 362 867 ZHT16MSWIN950 363 868 ZHT16HKSCS 364 870 AL24UTFFSS 366 871 UTF8 367 872 UTFE 368 即可得出这个
dmp
文件
的
字符集
为ZHS16GBK。 10.2 在数据库中直接更改
字符集
参数 操作步骤如下: SQL> shutdown immediate SQL> startup mount SQL> ALTER SYSTEM ENABLE RESTRICTED SESSION; SQL> ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0; SQL> ALTER SYSTEM SET AQ_TM_PROCESSES=0; SQL> ALTER DATABASE OPEN; SQL> alter session set events '10046 trace name context forever,level 12'; SQL> alter database character set INTERNAL_USE ZHS16GBK; SQL> shutdown immediate SQL> startup 察看系统
字符集
SQL> SELECT * FROM NLS_DATABASE_PARAMETERS; 看NLS_CHARACTERSET的值为多少,如果为ZHS16GBK则说明改动成功。 如果执行正常,则按照下一节进行测试操作。 10.3 更改成功后的测试 测试1,在数据库服务器端下测试 %setenv NLS_LANG "S
IMP
LIFIED CHINESE_CHINA.ZHS16GBK"; %stty -istrip -parity cs8; %setenv LANG zh %sqlplus /nolog SQL〉conn / as sysdba SQL〉create table test_tq (a char(20)); SQL〉insert into test_tq 1>(a) 2>values ('洣洣'); SQL〉select * from test_tq; 如显示为 A -------------------- 洣洣 则成功。 测试2,Windows客户端环境下测试 运 行REGEDIT,第一步选HKEY_LOCAL_MACHINE,第二步选择SOFTWARE, 第三步选择 ORACLE, 第四步选择 NLS_LANG, 键 入 与服 务 器 端 相 同 的 字 符 集(本例为:AMERICAN_AMERICAN.US7ASCII)。 右击我的电脑,然后点击属性,“高级”页面下,点击“环境变量”,在系统变量中添加: 变量名:NLS_LANG 变量值:S
IMP
LIFIED CHINESE_CHINA.ZHS16GBK 运行cmd,输入echo %NLS_LANG%,查看系统变量设置时否成功 然后运行: $sqlplus system/manager@hnsdh SQL〉conn / as sysdba SQL〉create table test_tq (a char(20)); SQL〉insert into test_tq 1>(a) 2>values ('洣洣'); SQL〉select * from test_tq; 如显示为 A -------------------- 洣洣 则成功。 10.4 更改不成功时的措施 新建数据库,设定
字符集
为ZHS16GBK,其他参数先照搬原来的,并
倒入
数据。建库时所需的具体参数在重建之前要搜集。注意在配置控制
文件
时设定最大数据
文件
数。 建好数据库以后,执行以下命令即可恢复数据库 %cd /sybdata/orabak %
imp
system/manager@hnsdh full=y ignore=y file=hnsdh_2005-8-17 log=hnsdh_
imp
_2005 -8-17
oracle从gbk导出后导入utf8,zhs16gbk的
dmp
导入到utf8字符的库中
将原来的zhs16gbk 导出的
dmp
导入到utf-8的库中验证当前的
字符集
select * from v$nls_parametersselect name,value$ from sys.props$ where name='NLS_CHARACTERSET'问题
IMP
-00019: 由于 ORACLE 错误 12899 而拒绝行
IMP
-00003: 遇到 ORACLE 错误 12899OR...
oracle 中数据库
字符集
不相同时,需导入导出数据的解决办法
问题:数据库
字符集
不同,导致
字节
不同,导致无法将数据库1中的大字段内容导入到数据库2中。
字符集
描述: 数据库1:GBK格式 数据库2:UTF-8格式 需求:将数据库1中的数据导入到数据库2中。 解决办法: 第一种解决办法: 1)查询数据库
字符集
SELECT值$ FROM sys.props $ WHERE name ='NLS_CHARACTERSET'; 2)更改数据库字符...
oracle导入
dmp
乱码问题
链接:http://www.eygle.com/archives/2004/09/nls_character_set_05.html 站内相关文章|Related Articles DBA警世录:where条件很重要 《循序渐进Oracle》一书第三章目录 更改导出
文件
字符集
的小工具 DBA警世录:更新系统表(props$)
修改
字符集
中文表名-导入导出-
字符集
查看Oracle
字符集
及怎样
修改
字符集
(zt)
一、什么是oracle
字符集
Oracle
字符集
是一个
字节
数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE支持国家语言的体系结构允许你使用本地化语言来存储,处理,检索数据。它使数据库工具,错误消息,排序次序,日期,时间,货币,数字,和日历自动适应本地化语言和平台。 影响oracle数据库
字符集
最重要的参数是NLS_LANG参数。它的格式如下:
Oracle 高级技术
3,491
社区成员
18,714
社区内容
发帖
与我相关
我的任务
Oracle 高级技术
Oracle 高级技术相关讨论专区
复制链接
扫一扫
分享
社区描述
Oracle 高级技术相关讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章