sqlldr要导入的数据文件比表中的列多怎么办? sqlldr要导入的数据文件比表中的列多怎么办?建立了一个表bonus有三列,数据文件有五列,导入数据文件的数据到表中怎么导入??谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 比如,数据文件如下(同样是基于只做演示的目的,这里三思就不真的提供几百兆甚至上千兆的数据了,不然出版社非把我活吞了不可):SMITH 7369 CLERK 800 20 ALLEN 7499 SALESMAN 1600 30 WARD 7521 SALESMAN 1250 30 JONES 7566 MANAGER 2975 20 MARTIN 7654 SALESMAN 1250 30 BLAKE 7698 MANAGER 2850 30 CLARK 7782 MANAGER 2450 10 KING 7839 PRESIDENT 5000 10 TURNER 7844 SALESMAN 1500 30 JAMES 7900 CLERK 950 30 FORD 7902 ANALYST 3000 20 MILLER 7934 CLERK 1300 10 示例代码保存为数据文件ldr_case6.dat。我们希望导入第1、3、4列而跳过2、5两列(注意这里指的不是字符列),创建控制文件如下:LOAD DATA INFILE ldr_case6.dat TRUNCATE INTO TABLE BONUS ( ENAME position(1:6), TCOL FILLER position(8:11), JOB position(13:21), SAL position(23:26) ) 示例代码保存为控制文件ldr_case6.ctl。SQLLDR的控制文件中对列定义时支持FILLER关键字,可以用来指定过滤列,在上述控制文件中,我们就使用该关键字来过滤列,相当于第8到第11列之间的数据不导入。事实上由于此处为定长字串,我们在控制文件中指定的position参数,已经限定了读取的内容,你甚至可以删除控制文件中TCOL FILLER position(8:11)那行。 执行SQLLDR命令:F:\oracle\script>SQLLDR SCOTT/TIGER CONTROL=LDR_CASE6.CTL SQL*Loader: Release 10.2.0.1.0 - Production on 星期三 3月 11 23:13:33 2009 Copyright (c) 1982, 2005, Oracle. All rights reserved. 达到提交点 - 逻辑记录计数 11 达到提交点 - 逻辑记录计数 12 SQL*Plus中查看导入结果:SQL> SELECT * FROM BONUS; ENAME JOB SAL COMM ---------- --------- --------- ---------- SMITH CLERK 800 ALLEN SALESMAN 1600 WARD SALESMAN 1250 JONES MANAGER 2975 MARTIN SALESMAN 1250 BLAKE MANAGER 2850 CLARK MANAGER 2450 KING PRESIDENT 5000 TURNER SALESMAN 1500 JAMES CLERK 950 FORD ANALYST 3000 MILLER CLERK 1300 复制粘贴过来后,看起来有些乱了。进下面这个网页吧,上面很详细,也很清晰。http://book.51cto.com/art/200912/170011.htm sqlldr的控制文件,可以选择要导入的列。 如果数据文件的列比要导入的表的列少,处理的时候可能麻烦些,多了反倒更加简单哦,一般有两种方法: 其一,修改数据文件,将多余的数据删除,不过这种方式,小数据量可行,但要是几百兆甚至上千上万呢?,这时,我们就要看其二咯。其二,在控制文件中使用关键字FILLER,指定过滤列。(变长格式必须指定FILLER,不然列植就有可能不对应,但若是定长可以不用的,因为我们在指定的position参数时已经限定了读取的内容) 通过oracle11g的dataguard来实现查询,生产库分离 oracle11g exp出整个用户数据库以后imp出错 缓冲区对于 CLOB 到 CHAR 转换或 BLOB 到 RAW 转换而言太小 (实际: 5588, 最大: 4000) 求一oracle日期类型转换 ORA-12170:TNS:连接超时 group by 条件可以使用在多表查询中么? 高分求助,触发器写法问题(有关随机数) 求助,多谢 既要装8i服务,又要装8客户端? 如何完全卸载oracle8i! oracle 不同用户之间的授权访问 命令怎么写 查询速度变慢……
进下面这个网页吧,上面很详细,也很清晰。
http://book.51cto.com/art/200912/170011.htm
其一,修改数据文件,将多余的数据删除,不过这种方式,小数据量可行,但要是几百兆甚至上千上万呢?,这时,我们就要看其二咯。
其二,在控制文件中使用关键字FILLER,指定过滤列。(变长格式必须指定FILLER,不然列植就有可能不对应,但若是定长可以不用的,因为我们在指定的position参数时已经限定了读取的内容)