如果你的用户下表不多的话,在sqlplus下先运行select * from tab;
然后记下每一个表名;
desc your_tb1;
把字段长度及类型定义贴(Ctrl+c)出来,
加入到create table your_tb1 ... (Ctrl+v) 主键等;
可把多个表的create语句写入此文本文件中(用*.sql保存后直接用);如果表很多的话,用exp,imp算了。
然后记下每一个表名;
desc your_tb1;
把字段长度及类型定义贴(Ctrl+c)出来,
加入到create table your_tb1 ... (Ctrl+v) 主键等;
可把多个表的create语句写入此文本文件中(用*.sql保存后直接用);如果表很多的话,用exp,imp算了。
export nls_lang=simplified chinese_china.zhs16gbk (linux)2 exp userid=username/password file=filename.dmp
或 exp userid=username/password file=filename.dmp rows=no indexs=no (不导出数据和索引)
3 set nls_lang=simplified chinese_china.zhs16gbk (windows)
export nls_lang=simplified chinese_china.zhs16gbk (linux)4 imp userid=username/password file=filename.dmp (先建立用户)
或 imp userid=username/password file=filename.dmp rows=no indexs=no (不倒入数据和索引)字符集不对(1-852) 错误 可用set nls_lang=simplified chinese_china.zhs16gbk (windows)来解决,如还报错,用set nls_lang=simplified chinese_china.zhs16cgb231280 (windows)
以上操作,全取决于你的数据库字符集是zhs16gbk 或zhs16cgb231280
如是其他字符集,需查资料,并且数据可能会有丢失,但表结构应该没问题,除非你用中文表名
create table aaa as
(select * from bbb@"访问remote实例的连接名" where 1=2)
即可。
比如为AMERICAN_AMERICA.WE8ISO8859P1,zhs16gbk 等好几十种。
把原来要导出的字符集记下,再在新系统中设置相同就不可能出现乱码现象。
linux上用 echo $NLS_LANG
window上用 set NLS_LANG 或 echo '%NLS_LANG%'