
oracle 的sqlldr把数据文件导入数据库
我导入数据文件名为“1.DAT”,文件包含10列,名字简单起见,就叫a1,a2...a10。oracle中,数据表有5个字段,字段名为A1,A2,A3,A4,A5,现在我...
我导入数据文件名为“1.DAT ”,文件包含10列,名字简单起见,就叫a1,a2...a10。oracle中,数据表有5个字段,字段名为A1,A2,A3,A4,A5,现在我想把1.DAT中的a2、a4、a6、a8、a9导入对应的字段的数据表中A1、A2、A3、A4、A5,这样,应该如何写ctr文件?没看懂题目的可以直接hi我,坐等高人ing
展开
2013-03-27
展开全部
LOAD DATA
INTO TABLE 表名字
FIELDS TERMINATED BY WHITESPACE
(a1x filler, A1, a3x filler, A2, a5x filler, A3, a7x filler, A4, a9x filler, A5 )
注意:这里的 filler关键字,意思是允许你映射一个输入记录中的一列,但是不把它放到数据库的表里面去。
INTO TABLE 表名字
FIELDS TERMINATED BY WHITESPACE
(a1x filler, A1, a3x filler, A2, a5x filler, A3, a7x filler, A4, a9x filler, A5 )
注意:这里的 filler关键字,意思是允许你映射一个输入记录中的一列,但是不把它放到数据库的表里面去。
追问
谢谢大虾的回答,追问,我这边a1是列。比如我的数据文件如下:
12|2|3|4|5|6|7|8|9|0
13|2|3|4|5|6|7|8|9|0
14|2|3|4|5|6|7|8|9|0
15|2|3|4|5|6|7|8|9|0
这样的话,我的第一列按你的意思(a1x filler)是 12x filler,第二列13x filler。是这样的么过滤的么?麻烦详细一些,跪求回复,谢谢
追答
如果是 | 分割的, 那你需要修改下面这行
FIELDS TERMINATED BY WHITESPACE
FIELDS TERMINATED BY意思是数据之间用什么符号分隔? 上面的意思是, 用 空格来分割。
而你的文件是用 | 来分割的。
那么你可以修改为
FIELDS TERMINATED BY '|'
a1x filler, A1, a3x filler, A2, a5x filler, A3, a7x filler, A4, a9x filler, A5
这里相当于定义一个 查询
查询结果有 10 列。
但是我只使用其中的 5列
那些不用的列, 后面加一个 filler
没有加 filler
将按照名字, 向指定的表, 指定的列插入数据。
也就是 A1, A2, A3, A4, A5 要和你数据库里面的 列名字一样。
至于 a1x , a3x , a5x , a7x , a9x 这几列, 是不用的, 就随便起个唯一的名字, 只要不冲突就行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询