EXP/IMP 学习(四)

1.4  常见问题
1.  字符集问题
ORACLE  多国语言设置是为了支持世界范围的语言与字符集,一般对语言提示, 货币形式,排序方式和  CHAR,VARCHAR2,C LOB,LONG  字段的数据的显示等有效。 ORACLE  的多国语言设置最主要的两个特性就是国家语言设置与字符集设置,国家语 言设置决定了界面或提示使用的语言种类,字符集决定了数据库保存与字符集有关数据(如文本)时候的编码规则。
ORACLE 字符集设定,分为数据库字符集和客户端字符集环境设置。在数据库端,
字符集在创建数据库的时候设定,并保存在数据库 props$表中。
在客户端的字符集环境比较简单,主要就是环境变量或注册表项  NLS_ LANG,注 意 NLS_LANG的优先级别为:参数文件使用一点点技巧,就可以使导出/导入在不同的字符集的数据库上转换数据。这里
需要一个 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 获取该字符集的编号: SQL> select nls_charset_id('zhs16gbk') from dual; NLS_CHARSET_ID('ZHS16GBK')
--------------------------
把 852换成 16进制数,为 354,把 2、3字节的 00  01 换成 03  54,即完成了把该 dmp文件字符集从 us7ascii 到 zhs16gbk 的转化,这样,再把该 dmp文件导入到 zhs16gbk 字符集的数据库就可以了。
2.  版本问题
Exp/Imp 很多时候,可以跨版本使用,如在版本 7与版本 8之间导出导入数据,但 这样做必须选择正确的版本,规则为
·总是使用 IMP的版本匹配数据库的版本,如果要导入到 816,则使用 816的导入工 具。
·总是使用 EXP 的版本匹配两个数据库中低的那个版本,如在 815与 816之间互导,则使用 815的 EXP 工具
imp和 exp版本不能往上兼容:    imp 可以导入低版本 exp生成的文件,  不能导入高版本 exp生成的文件。
 
2.1 基本知识
Oracle 的  SQL* LOADER  可以将外部格式化的文本数据加载到数据库表中。通常 与 SPOOL导出文本数据方法配合使用。
1.命令格式
SQLLDR keyword=value [,keyword=value,...]
例:
$ sqlldr user/pwd control=emp.ctl data=emp.dat bad=emp.bad log=emp.log
2.控制文件
 
SQL*LOADER  根据控制文件可以找到需要加载的数据。并且分析和解释这些数
据。
控制文件由三个部分组成,具体参数参考帮助文档:
1.  全局选件,行,跳过的记录数等;
2. INFILE 子句指定的输入数据;
3.  数据特性说明。
comment: --注释
例:
load data infile *
append    --除了 append外,还有 insert、replace、truncate等方式
into table emp
fields terminated b y ‘|’
(
no             float external, name char(20),
age           integer external,
duty         char(1),
salary      float external,
upd_ts     date(14) ‘YYYYMMDDHH24MISS’
)
begindata
100000000003|Mulder|000020|1|000000005000|20020101000000
100000000004|Scully|000025|2|000000008000|20020101235959
 
控制文件中 infile选项跟 sqlldr 命令行中 data 选项含义相同,如使用 infile *则表明
数据在本控制文件以 begin data 开头的区域内。 一些选项:
FIELDS TERMINATED BY WHITESPACE FIELDS TERMINATED BY x'09'
FILLER_1 FILLER, //  指定某一列将不会被装载
DEPTNO position(1:2), DNAME position(*:16), //  指定列的位置
SEQNO RECNUM //载入每行的行号
SKIP n          //  指定导入时可以跳过多少行数据

3.数据文件
按控制文件数据格式定义的数据行集,例:
100000000001|Tom|000020|1|000000005000|20020101000000
100000000002|Jerry|000025|2|000000008000|20020101235959
固定格式、可变格式、流记录格式:
固定格式:
当数据固定的格式(长度一样)时且是在文件中得到时,要用 INFILE "fix n"
load data
infile 'example.dat' "fix 11"
into table example
fields terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7)) example.dat:
001, cd, 0002,fghi,
00003,lmn,
1, "pqrs",
0005,uvwx,
可变格式:
当数据是可变格式(长度不一样)时且是在文件中得到时,要用 INFILE "var n"。如:
load data
infile 'example.dat' "var 3"
into table example
fields terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7)) example.dat:
009hello,cd,010world,im,
012my,name is,
流记录格式: // Stream-recored format:
load data infile 'xx.dat' "str '|\n'"
into table xx field terminated b y ',' optionally enclosed by '"'
(col1 char(5), col2 char(7))
example.dat:
hello, ccd,|
world, bb,|
4.  坏文件
bad=emp.bad
坏文件包含那些被 SQL*Loader拒绝的记录。被拒绝的记录可能是不符合要求的记
录。
5.  日志文件及日志信息
log=emp.log
当 SQL*Loader  开始执行后,它就自动建立  日志文件。日志文件包含有加载的总 结,加载中的错误信息等。

 

时间: 2024-09-19 15:25:41

EXP/IMP 学习(四)的相关文章

EXP/IMP 学习(三)

1.3  优化1.  加快exp速度加大 large_pool_size,可以提高 exp的速度 采用直接路径的方式(direct=y),数据不需要经过内存进行整合和检查. 设置较大的 buffer,如果导出大对象,小 buffer会失败.export文件不在 ORACLE使用的驱动器上 不要 export到 NFS文件系统UNIX环境:用管道模式直接导入导出来提高 imp/exp的性能 2.  加快imp速度建立一个 indexfile,在数据 import完成后在建立索引将 import 文

EXP/IMP 学习(一)

1.1  基本命令  1.  获取帮助 $ exp help=y$ imp help=y 2.  三种工作方式 (1)交互式方式$ exp        //  然后按提示输入所需要的参数(2)命令行方式$ exp user/pwd@dbname file=/oracle/test.dmp full=y    //  命令行中输入所需的参数 (3)参数文件方式$ exp parfile=username.par    //  在参数文件中输入所需的参数参数文件 username.par 内容 u

EXP/IMP 学习(二)

2.  增量导出/导入// oracle 9i  以后 exp  不再支持  inctype必须为  SYS  或  SYSTEM  才可执行增量导出导入增量导出:   包括三个类型:(1)"完全"增量导出(Complete)  //  备份整个数据库$ exp user/pwd file=/dir/xxx.dmp log=xxx.log inctype=complete(2)"增量型"增量导出      导出上一次备份后改变的数据.$ exp user/pwd f

EXP/IMP 学习(五)

2.2  高级选项1. Conventional Path Load  与  Direct Path Load Conventional-path Load:通过常规通道方式上载.特点:commit, always  gen redo logs,  enforce all constraints, fire insert triggers, can load into cluster, other user can make changerows:每次提交的记录数bindsize:每次提交记录的

关于exp/imp的总结学习

关于exp/imp,是很常用的数据导出导入工具,在10g开始推出的数据泵datapump相当于是exp/imp的补充和升级版本.在后续章节再做一个总结. exp/imp的使用相对比较简单,通常用做在不同的数据库或者环境之间转移数据,即使数据库位于不同的平台,也可以通过统一的接口来做数据的导入导出工作. 使用方法可以通过exp -help,imp -help来得到一个简单的帮助说明. USERID must be the first parameter on the command line. K

[20171105]exp imp buffer参数解析.txt

[20171105]exp imp buffer参数解析.txt oracle官方所给的关于buffer的解释如下: https://docs.oracle.com/cd/A84870_01/doc/server.816/a76955/ch01.htm BUFFER Default: operating system-dependent. See your Oracle operating system-specific documentation to determine the defaul

【exp/imp】将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中

[exp/imp]将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中   1.1  BLOG文档结构图     1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 如何将US7ASCII字符集的dmp文件导入到ZHS16GBK字符集的数据库中(重点,2种方法)? ② 从dmp文件可以获取到哪些信息?如何从dmp文件获取到dmp文件的字符集(重点,N种方法)? ③

浅谈exp/imp(上)

作为DBA,经常需要在不同数据库环境间做数据的导入导出,exp/imp就是这样的轻便快捷的客户端工具,可以很方便的在不同数据库之间转移数据对象,即使数据库位于不同的硬件或者软件平台上.exp会转储产生对应的二进制文件,里面包含数据的定义信息,数据内容等,也就是我们通常所说的dump文件. exp/imp是比较经典的数据导出导入工具,不过自expdp/impdp推出以来,exp/imp还是受到了不少的冷落,在新的数据库版本中,支持力度都集中在了expdp/impdp上面.Expdp/impdp是基

利用RMAN转移数据和EXP/IMP转移数据的实测比较

比较|数据 由于工程需要经常将客户的现场数据导出到公司的开发环境中,随着客户现场数据量的不断增大,原先 使用的导出导入的方法需要花费越来越长的时间,所以测试一下RMAN的效率,验证是否能用恢复RMAN备 份的方法来代替以往的EXP/IMP方法.原本想过用传输表空间的方法,但是由于我们通常在创建数据库的 时候就给业务所用的表空间创建了很大的数据文件,这样在传输表空间的copy数据文件的步骤上会花费 很长的时间,所以还是决定测试一下RMAN了. 测试目的:实现对于JHJKREC用户的数据转移. 在1