oracle怎样导入海量数据(100万+)

公司oracle数据库需要导入数据,但只有*.sql文件,我用命令行@ xxx.sql导入,一整晚也就几十万条,请问有没有方法导入海量数据。(前提条件:只有*.sql文件)
最新回答
夜莺与鲸

2024-06-27 05:13:01

需要用sqlloader来进行大量的数据导入。

1、首先,在数据库中要创建跟字段对应的表,并设置字段长度足够大。

2、根据创建的表名,及文本的格式编写脚本。保存成文件,名字为:load.ctl

 load   data   
  infile   'result.txt'   --文本文件名
  replace into  table   resultxt    --插入的表名 
  (resultid   char   terminated   by   ',',   --读取以逗号分隔的数据,下同
  website   char   terminated   by   ',',   
  ipport   char   terminated   by   ',',   
  status   char   terminated   by   whitespace)

3、ctrl+win键,打开

命令提示符

4、执行以下语句:

sqlldr userid=
用户名
/密码@数据库实例 control=路径\result.ctl  log=路径\resulthis.out

5、等待导入完成即可。

傲似公主

2024-06-27 07:51:29

sql语句只适合导入少量数据,对应你这种情况,唯一的办法是启多个sqlplus,同时进行数据导入。
如果sql文件是一个的话,在linux里面用split命令分割成多个sql文件。要手工检查分割后的sql的完整性(就是第一个sql插入和最后一个sql插入是否完整),然后开10个,或20个sqlplus,同时导入数据。
只有这个唉办法。
我恋↘爱乐

2024-06-27 09:14:22

用Oracle的SQLLoader试一试。
追问
能讲一下步奏吗,网上搜好像没搜到SQLLoader导入*.sql文件怎么导入
追答
*.sql里的数据格式是固定的吗?
我的意思是如果*.sql里的有固定的书写格式的话,可以在sqlloader的.ctl文件里定好规则,将*.sql文件里的数据导入。
如果不是这样的话,那这个方法可能还不行。
追问
都是插入语句,不知道是否固定呢?
追答
明白了。可以用这种方法试一下。
假设*.sql里的数据是下面的格式。
insert into 表 values('wwf', 33, '47');
在.ctl文件里用逗号区分,将数据导入一个自己创建的临时表中。
之后自己写个PL/SQL将临时表中的数据进行格式转换,登录到表中。