外部表以SQL*Loader为基础,但定义它们的语法有所不同。如果您已经熟悉SQL*Loader,就有一条捷径:应用SQL*Loader本身生成一段为您建立外部表定义的脚本。
当您添加一个SQL*Loader命令行时,参数EXTERNAL_TABLE=GENERATE_ONLY,它将把系统使用的控制文件转译成一段SQL脚本,并输出到系统的日志文件中。您可以对日志文件进行编辑,或复制并粘贴这些代码到新的脚本中。
列表A中是一个用来将不同长度的文件记录加载到数据库中的控制文件。执行下面的命令不会加载行,但会在日志文件中输出一个外部表。列表B中为输出内容。
| 列表A: LOAD DATA INFILE 'loademp.dat' BADFILE 'loademp.bad' DISCARDFILE 'loademp.dsc' APPEND INTO TABLE emp FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' (empno, ename, job, mgr, hiredate, sal, comm, deptno) |
|
列表B: SQL*Loader: Release 10.2.0.1.0 - Production on Tue Sep 19 11:07:46 2006 Copyright (c) 1982, 2005, Oracle. All rights reserved. Control File: loademp.ctl Number to load: ALL Table EMP, loaded from every logical record.
CREATE DIRECTORY statements needed for files
statements to cleanup objects created by previous statements: Run began on Tue Sep 19 11:07:46 2006 Elapsed time was: 00:00:02.81 |
sqlldr scott/tiger CONTROL=loademp.ctl
EXTERNAL_TABLE=GENERATE_ONLY
首先,脚本建立一个指向包含输入文件目录的目录对象。目录对象给特定操作系统的完整路径名取一些简短、独立于平台的名称。用CREATE DIRECTORY命令建立关联。要这样做,我们需要具有CREATE ANY DIRECTORY系统权限,或让数据库管理员替您运行它以获得许可。而且,系统生成的名称不利记忆。在运行前,最好对脚本进行编辑,取一个更有意义的名称。
接下来,脚本中包含CREATE TABLE语句本身。这个语句参考目录对象(如果您修改了上面的名称,对它进行编辑),文件被加载,执行ORGANIZATION EXTERNAL子句。它还包含描述文本文件布局的语法。
最后,脚本中包含一个在子查询的外部表中选择的INSERT(插入)语句范例,以及在处理完毕后终止外部表和目录的语句。
Bob Watkins(OCP、MCDBA、MCSE、MCT)是一位有25年经验的计算机专业人士,从事过技术培训师、顾问与数据库管理员等职。
收藏 http://www.qqread.com/oracle/2006/10/y246848.html相关专题
- Oracle 10g基础应用 (4414篇文章)
- PL/SQL (433篇文章)
- Oracle初学者必知的100个问题 (33377次浏览)
- Oracle PL/SQL语言基础 (14253次浏览)
- Oracle架构的基础知识(入门级) (13523次浏览)
- Win 2003 Server重新安装Oracle9i (614次浏览)
- Oracle优化的五个方面 (613次浏览)
- 多个Oracle数据库创建一个Excel报表 (554次浏览)
- 怎么样快速复制表或者是插入数据 (527次浏览)
- 解决Oracle中Exp/Imp大量数据处理问题 (526次浏览)
- 重启系统的时候自动启动oracle服务 (396次浏览)
- 记几个容易忘的oracle 函数 (366次浏览)



