ITPub博客

首页 > Linux操作系统 > Linux操作系统 > sql*load

sql*load

原创 Linux操作系统 作者:xhailiang 时间:2007-02-11 00:00:00 0 删除 编辑

性能增强提示:

1)使用定位域而不要使用分隔域,分隔域要求装载器搜索数据以查找分隔符。定位域比
较快,因为装载器只需要做简单的指针运算。
2)为终止域指定最大长度,使每个捆绑数组更为有效地插入。
3)预分配足够的存储空间。当数据被装载时,表中需要更多的空间, O r a c l e分配更多的
区间以容纳数据,如果在数据装载期间频繁地做这项操作,处理的开销将非常大。在装载之
前计算或估算存储空间需求能够让你预先创建必要的存储空间。
4)如果可能,在控制文件中尽量避免使用N U L L I F和D E FA U LT I F子句。这两个子句对于
被装载的每条记录都会引起列运算。
5)分割数据文件,并行运行常规路径装载。
6)通过使用命令行参数R O W S,减少提交次数。
7)避免不必要的字符集转换,确保客户端的N L S _ L A N G环境与服务器端的相同。
8)只要可能,尽量使用直接路径装载方法。
9)当使用直接路径装载方法时,为表的最大索引预先排序并使用S O RTED INDEXES子
句。
1 0)当使用直接路径装载方法时,尽量使用并行直接路径选项。
11)在直接路径装载期间,尽可能少使用重做日志。有三种不同级别的控制实现这点:
• 禁止数据库归档。
• 在控制文件中使用关键字U N R E C O V E R A B L E。
• 使用N O L O G属性修改表和/或索引。


G:test>sqlldr system/password control=test.ctl parallel=ture rows=5000 bindsize=1048
5760 readsize=10485760

1.controlfile:

LOAD DATA
INFILE 'test.dat'
BADFILE 'test.BAD'
DISCARDFILE 'test.DSC'
INSERT INTO TABLE HR.TEST
Fields terminated by ";" Optionally enclosed by '"'
(
EMPLOYEE_ID NULLIF (EMPLOYEE_ID="NULL"),
FIRST_NAME,
LAST_NAME,
EMAIL,
PHONE_NUMBER,
HIRE_DATE DATE "MM/DD/YYYY HH24:MI:SS" NULLIF (HIRE_DATE="NULL"),
JOB_ID,
SALARY NULLIF (SALARY="NULL"),
COMMISSION_PCT NULLIF (COMMISSION_PCT="NULL"),
MANAGER_ID NULLIF (MANAGER_ID="NULL"),
DEPARTMENT_ID NULLIF (DEPARTMENT_ID="NULL")
)
数据格式示例:172;"Elizabeth";"Bates";"EBATES";"011.44.1343.529268";"03/24/1999 00:00:00";"SA_REP";7300;0.15;148;80

2.controlfile

LOAD DATA
INFILE 'test.dat'
BADFILE 'test.BAD'
DISCARDFILE 'test.DSC'
INSERT INTO TABLE HR.TEST
Fields terminated by ";" Optionally enclosed by ''
(
EMPLOYEE_ID ,
FIRST_NAME,
LAST_NAME,
EMAIL,
PHONE_NUMBER,
HIRE_DATE DATE "MM/DD/YYYY HH24:MI:SS"
JOB_ID,
SALARY ,
COMMISSION_PCT ,
MANAGER_ID ,
DEPARTMENT_ID
)
BEGINDATA
数据格式示例:

169;Harrison;Bloom;HBLOOM;011.44.1343.829268;03/23/1998 00:00:00;SA_REP;10000;0.2;148;80

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/308563/viewspace-171971/,如需转载,请注明出处,否则将追究法律责任。

上一篇: LogExplore简介
请登录后发表评论 登录
全部评论

注册时间:2008-02-17

  • 博文量
    270
  • 访问量
    425043