首页 > 数据库技术 > 详细

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

时间:2020-09-12 00:33:24      阅读:104      评论:0      收藏:0      [点我收藏+]

最近在项目遇到了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 ‘图形编号‘;

技术分享图片

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

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

txt文件插入13000条数据

将需要导入的2列数据排列格式效果如图(文件名为txbh.txt):
技术分享图片

tip:

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

技术分享图片

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

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

上效果图,并语法解释:
技术分享图片

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

技术分享图片

4.执行脚本

执行脚本语法:

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

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

技术分享图片
技术分享图片

5.注意事项

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

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

原文:https://www.cnblogs.com/quxingzhou/p/13655101.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!