Oracle的imp命令导入备份数据

笔者在做项目过程中遇到以下问题,在客户提供的数据库备份文件需要导入到数据库中,以便使用,数据库为Oracle 9.1.1,安装在Windows Server 2000 JP系统中,服务器端字符集为JAPANESE_JAPAN_UTF8,而客户端使用的是中文Windows Server 2000系统,字符集为SIMPLIFIED CHINESE_CHINA.ZHS16GBK。

在插入数据过程中出现如下问题:

C:\oracle\ora90\BIN>imp scott/tiger@SDES full=y file=c:\expdat.dmp

Import: Release 9.0.1.1.1 - Production on 星期一 1月 22 19:05:43 2007

(c) Copyright 2001 Oracle Corporation. All rights reserved.

连接到: Oracle9i Release 9.0.1.1.1 - Production

JServer Release 9.0.1.1.1 - Production

IMP-00016: 不支持要求的字符集转换(从类型830到852)

IMP-00000: 未成功终止导入

使用2进制文件编辑工具,如uedit32。打开导出的dmp文件,获取2、3字节的内容,如00 01,先把它转换为10进制数,为1,使用函数NLS_CHARSET_NAME即可获得该字符集:

SQL> select nls_charset_name(1) from dual;

NLS_CHARSET_NAME(1)

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

US7ASCII

可以知道该dmp文件的字符集为US7ASCII,如果需要把该dmp文件的字符集换成ZHS16GBK,则需要用NLS_CHARSET_ID获取该字符集的编号: 笔者遇到的问题为830到852类型转换错误,进入Oracle的sqlplus,进行以下查询:

SQL> select nls_charset_name(830) from dual;

NLS_CHARSET_NA

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

JA16EUC

SQL> select nls_charset_name(852) from dual;

NLS_CHARSET_NAME

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

ZHS16GBK

SQL>

SQL> select nls_charset_id('zhs16gbk') from dual;

NLS_CHARSET_ID('ZHS16GBK')

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

852

时间: 2024-08-31 08:09:37

Oracle的imp命令导入备份数据的相关文章

Oracle exp/imp命令快速导入导出数据

用exp命令导出表结构,不导出表数据.只需在命令行里加一个参数rows=n即可.表示不导出表数据. exp username/pwd@sid file=d:databak.dmp owner=(user)rows=n ******************************************************************************************************************** oracle exp/imp命令详解 E:>ex

用Mysql命令导入sql数据备份的方法

下面是在命令行下导入sql数据的方法,需要的朋友可以参考下. 我的个人实践是:phpmyadmin 导出 utf-8 的 insert 模式的 abc.sql ftp abc.sql 到服务器 ssh 到服务器 mysql -u abc -p use KKK(数据库名,如果没有就 create database KKK) set names 'utf8' source abc.sql 注意:我看到 set character set utf8; 的说法,那样不行,中文乱码. 1.首先在命令行控制

MySQL命令导入导出数据表记录的方法(select load data)

  MySQL数据库导入导出命令比较常见的的是使用mysqldump source这两个命令.本篇文章分享一种不一样的,更快捷方便的导入导出数据的方法. (1)导出数据 a.使用默认的路径 select * from 数据表名 into outfile '文本名.txt'; 示例: /*将phpernote表中的数据导出并保存到C盘目录,另存为phpernote.txt文件*/ select * from phpernote into outfile 'c:\phpernote.txt'; b.

Oracle数据库imp命令导入时1659错误处理

今儿在自己电脑上搭建开发环境,在给数据库导入表结构以及数据时报1659错误,错误内容如下: IMP-00017: 由于 ORACLE 错误 1659, 以下语句失败:         "CREATE TABLE "T_DATA_KKCL" ---- IMP-00003: 遇到 ORACLE 错误 1659ORA-01659: 无法分配超出 6 的 MINEXTENTS (在表空间 HWITS_1中) 第一反应--空间不足?查看发现C盘只有614KB,尼玛!PS:Oracle安

mysql中常用命令导入导出数据命令(mysqldump,source)

今天想导出部分数据找了半天终于找到对应的几个方法 首先看下字符集,省的导出的时候是乱码 1.用命令  代码如下 复制代码 mysql> SHOW VARIABLES LIKE "character_set%"; 根据对应的字符集value决定采用导出字符latin1 还是utf8 2.采用 –where的方式导出  代码如下 复制代码 mysqldump -uroot -p123456 --default-character-set=latin1  i5a6  i5a6_data

Oracle中imp命令使用出错——未知命令开头

大家要知道imp是在cmd命令行中才起作用了.不要弄到sqlplus里面了.要注意^  ^.

oracle中 exp/imp导出导入数据库例子

导出前先查看系统的NLS_LANG设置: echo $NLS_LANG AMERICAN_AMERICA.ZHS16CGB231280 select userenv('language') from dual; AMERICAN_AMERICA.ZHS16GBK 这两个值不同会报错: EXP-00091: Exporting questionable statistics 问题产生的原因: linux下用户环境变量语言集和oracle数据库中的环境变量语言集不同. 解决办法: 将linux下用户

Oracle数据库异常恢复前备份保护现场建议—ASM环境

在上一篇中写道了文件系统的库,在进行异常恢复前的备份方法(Oracle异常恢复前备份保护现场建议-FileSystem环境),对于asm库,因为asm 里面的数据文件无法直接dd文件头,因此备份方式也有所改变.对于asm是mount,但是数据库不能打开,使用rman或者asm的cp命令全部备份数据文件也来不及或者空间不足,这样的情况下,你可以考虑使用rman或者cp命令备份控制文件和system表空间文件,cp命令备份redo,dd命令备份文件头,来完成asm情况下数据库异常恢复前备份 控制文件

Oracle备份数据导入到其他的表空间(只设置默认表空间无效)

  我们在导入一个Oracle备份的数据文件(*.dmp)到另外一个数据库的用户下时,如果需要更换表空间,可以采用下几个办法. 假设导出用户名:EXP_USER 表空间为:EXP_TSPACE 导入用户名:IMP_USER 表空间为:IMP_TSPACE 1.设置导入用户的默认表空间以及权限. a)建表语句如下: create user IMP_USER Sql代码 identified by "密码" default tablespace IMP_TSPACE temporary t