oracle通过.txt文件导入百万数据,效率高

最近在项目遇到了oralce需要导入50多万条数据的需求,使用insert语句1万条数据差不多最快需要30秒,那么50次呢...效率太低。通过在网上查阅资料找到了一个比较高效的方法。具体操作如下:

1. 需要导入数据的表先创建好

比如说需要导入数据的表BJ_TD_TXBH有2列,字段为GUID、TXBH。

创建表的sql(没有考虑添加主键,如果添加主键GUID,那么要确保导入50万条的数据GUID唯一)

-- Create table
create table BJ_TD_TXBH
(
  GUID varchar2(50),
  TXBH varchar2(50)
)
tablespace USERS
  pctfree 10
  initrans 1
  maxtrans 255
  storage
  (
    initial 64K
    next 8
    minextents 1
    maxextents unlimited
  );
-- Add comments to the columns 
comment on column BJ_TD_TXBH.GUID
  is ‘GUID‘;
comment on column BJ_TD_TXBH.TXBH
  is ‘图形编号‘;

oracle通过.txt文件导入百万数据,效率高

创建完成之后,查询没有数据。

2.创建好表之后,将需要导入的2列数据保存到.txt文件,使用逗号隔开。

txt文件插入13000条数据

将需要导入的2列数据排列格式效果如图(文件名为txbh.txt):
oracle通过.txt文件导入百万数据,效率高

tip:

因为我这边提供的数据是从excel复制过来的,怎么将50多万条数据GUID和TXBH中间加逗号呢?
方法如图:

oracle通过.txt文件导入百万数据,效率高

3.编写自动入库脚本.ctl

--编写 insert.ctl 文件
load data
characterset utf8
INFILE ‘D:/sql/txbh.txt‘
Append into table bj_td_txbh
fields terminated by ","
(
guid,txbh
)

上效果图,并语法解释:
oracle通过.txt文件导入百万数据,效率高

编写好.ctl文件和.txt文件之后,放入到D:/sql文件中。

oracle通过.txt文件导入百万数据,效率高

4.执行脚本

执行脚本语法:

sqlldr userid=用户名/密码@数据库实例名 control=脚本名

执行结果(测试插入了13000条数据):

oracle通过.txt文件导入百万数据,效率高
oracle通过.txt文件导入百万数据,效率高

5.注意事项

1.当时在服务器操作的时候,使用记事本打开.ctl文件之后可能会损坏文件格式,执行脚本会报错。建议使用编译器或者notepad++来进行操作。

oracle通过.txt文件导入百万数据,效率高

上一篇:MySQL8.0大表秒加字段,是真的吗?


下一篇:MySQL 存储引擎