Oracle导入大数据

最近在做一个用oracle做为对照组的实验,涉及了用oracle对大量数据进行导入。在网上找了一些方法,个人觉得用控制文件(.ctl)是比较靠谱的。我用的oracle版本是11g,虚拟机配的win8环境。数据集为txt文件。

1 .建表:在数据中创建一个新表,比如

 create table test(a1 int,a2 int,a3 int);  

2 .新建ctl文件,就是在记事本中打代码,然后修改文件后缀名就行了,命名为load(后缀名为ctl),如:

 load data
 infile 'C:\data\chart1.txt'
 replace into table test
 (a1 char terminated by ',',
  a2 char terminated by ',',
  a3 char terminated by whitespace)

解释一下,‘C:\data\chart1.txt’ 是我想要导入表中的数据文件所在的位置;replace是删除表中原有的内容重新放数据进去,可以根据自己需求换的,换成append就是在表末尾追加数据;因为我的数据格式为

123
456
789
...

所以在a1和a2后面都是terminated by ‘,’,就是用逗号分割,而a3后面是下一行输入,所以是whitespace分割,所以你可以根据自己的需求定义不同的分割符。然后把load.ctl和你的数据放在同一个文件夹下。

3 .在控制台中进入到你存放ctl文件和数据文件的文件夹,可用命令cd进入到相应的文件夹,然后执行语句:

sqlldr userid=scott/tiger control=load.ctl

scott是我的用户,你要改成你自己的表所在的用户,tiger是我的密码,同样也要改成你自己的。control后面就是你要用的控制文件的文件名,因为前面我命名为load了,所以这里就是load。执行后等结果就好,如果你想知道时间的话,会在你的存放数据和ctl文件的文件夹里自动生成日志文件的。

SQL*Loader: Release 11.2.0.1.0 - Production on 星期日 6月 5 15:46:46 2016

Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

控制文件:      load.ctl
数据文件:      C:\data\chart1.txt
  错误文件:    chart1.bad
  废弃文件:    未作指定

(可废弃所有记录)

要加载的数: ALL
要跳过的数: 0
允许的错误: 50
绑定数组: 64 行, 最大 256000 字节
继续:    未作指定
所用路径:       常规

表 HOUSEBASE,已加载从每个逻辑记录
插入选项对此表 REPLACE 生效

   列名                        位置      长度  中止 包装数据类型
------------------------------ ---------- ----- ---- ---- ---------------------
HOUSE_ID                            FIRST     *   ,       CHARACTER            
PUR_DATE                             NEXT     *   ,       CHARACTER            
LON                                  NEXT     *   ,       CHARACTER            
LAT                                  NEXT     *   ,       CHARACTER            
HOUSE_TYPE                           NEXT     *   ,       CHARACTER            
HOUSE_SIZE                           NEXT     *  WHT      CHARACTER            


表 HOUSEBASE:
  10000000 行 加载成功。
  由于数据错误, 0 行 没有加载。
  由于所有 WHEN 子句失败, 0 行 没有加载。
  由于所有字段都为空的, 0 行 没有加载。


为绑定数组分配的空间:                 99072 字节 (64 行)
读取   缓冲区字节数: 1048576

跳过的逻辑记录总数:          0
读取的逻辑记录总数:      10000000
拒绝的逻辑记录总数:          0
废弃的逻辑记录总数:        0

从 星期日 605 15:46:46 2016 开始运行
在 星期日 605 15:50:49 2016 处运行结束

经过时间为: 00: 04: 02.35
CPU 时间为: 00: 00: 24.88

这是我的日志文件,因为实际中我用的不是test表,所以里面的表名会不太一样。

总结:以上就是导入大量数据的全过程,希望会对你有所帮助!

你可能感兴趣的:(数据库)