从gbk导出的dmp导入到utf8的oracle
短信预约 -IT技能 免费直播动态提醒
第一步,导入表结构:
imp userid=xxx/password file yyy.dmp full=y rows=n log=yyy.log
上面语句不会导入数据,只会导入结构,但可能会出现几个错误:
1、表空间不存在,不能创建对象,这个可以建立一个表空间,或者将报错的脚步修改表空间后重新执行。
2、如果按用户导出,可以将full=y修改为fromuser=fff touser=xxx再导入。
依据log文件做相应处理。同时日志会显示相关字符集等信息,来确定字符串长度是否需要修改。
第二步(可选),修改对象表空间
1、生成修改表表空间的语句:
select 'alter table '||table_name||' move tablespace xxx_base;' from user_tables;
2、生成修改索引表空间的语句:
select 'alter index '||index_name||' rebuild tablespace xxx_base;' from user_indexes;
第三步(可选),drop触发器
生成drop触发器的语句:
select 'drop trigger '||trigger_name||';' from user_triggers;
第四步,修改表字段字符串类型字段的长度
如果在修改长度的列上建立了函数索引,需要备份索引定义后删除,然后修改字段长度再重建函数索引。
set heading off
set space 0
set pagesize 0
set trimout on
set trimspool on
set linesize 2500
spool modify_len.sql
select 'alter table '||table_name||' modify ('||column_name||' '||data_type||'('||ceil(data_length*1.5)||'));'
from user_tab_columns where data_type in ('VARCHAR2','CHAR','NCHAR','NVARCHAR2') and table_name not like 'BIN%' and table_name like 'DSJ%';
spool off
@modify_len.sql
第五步,导入数据之前,需要屏蔽所有外键
select 'alter table '||t.table_name||' disable constraint '||t.constraint_name||';' from user_constraints t where t.constraint_type='R' order by t.table_name;
第六步,导入数据
imp userid=xxx/password file yyy.dmp full=y data_only=y log=yyy1.log
第七步,导入数据之后,需要启用所有外键
select 'alter table '||t.table_name||' enable constraint '||t.constraint_name||';' from user_constraints t where t.constraint_type='R' order by t.table_name;
imp userid=xxx/password file yyy.dmp full=y rows=n log=yyy.log
上面语句不会导入数据,只会导入结构,但可能会出现几个错误:
1、表空间不存在,不能创建对象,这个可以建立一个表空间,或者将报错的脚步修改表空间后重新执行。
2、如果按用户导出,可以将full=y修改为fromuser=fff touser=xxx再导入。
依据log文件做相应处理。同时日志会显示相关字符集等信息,来确定字符串长度是否需要修改。
第二步(可选),修改对象表空间
1、生成修改表表空间的语句:
select 'alter table '||table_name||' move tablespace xxx_base;' from user_tables;
2、生成修改索引表空间的语句:
select 'alter index '||index_name||' rebuild tablespace xxx_base;' from user_indexes;
第三步(可选),drop触发器
生成drop触发器的语句:
select 'drop trigger '||trigger_name||';' from user_triggers;
第四步,修改表字段字符串类型字段的长度
如果在修改长度的列上建立了函数索引,需要备份索引定义后删除,然后修改字段长度再重建函数索引。
set heading off
set space 0
set pagesize 0
set trimout on
set trimspool on
set linesize 2500
spool modify_len.sql
select 'alter table '||table_name||' modify ('||column_name||' '||data_type||'('||ceil(data_length*1.5)||'));'
from user_tab_columns where data_type in ('VARCHAR2','CHAR','NCHAR','NVARCHAR2') and table_name not like 'BIN%' and table_name like 'DSJ%';
spool off
@modify_len.sql
第五步,导入数据之前,需要屏蔽所有外键
select 'alter table '||t.table_name||' disable constraint '||t.constraint_name||';' from user_constraints t where t.constraint_type='R' order by t.table_name;
第六步,导入数据
imp userid=xxx/password file yyy.dmp full=y data_only=y log=yyy1.log
第七步,导入数据之后,需要启用所有外键
select 'alter table '||t.table_name||' enable constraint '||t.constraint_name||';' from user_constraints t where t.constraint_type='R' order by t.table_name;
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341