大数据量的情况下怎么将数据导入到oracle数据库?

前言:大数据量的情况下,导入csv文件内容到数据库会很慢,为了节省宝贵的测试时间,需要寻找工具来提高数据导入效率,效率提高工具:sqlload(可将上亿条数据,几分钟内全部导入到oracle数据库,效率非常高)

使用说明:
1、在目标数据库创建导入的表(比如:10.9.215.240 oracle数据库中填写临时表)

CREATE TABLE YG_IS.TEMP
(
    order_time date,
    pay_time date,
    inflow_time date,
    order_no VARCHAR2(255),
    out_order_no VARCHAR2(255),
    warehouse_code VARCHAR2(255),
    merchant_code VARCHAR2(255),
    business_subject VARCHAR2(255),
    order_status VARCHAR2(255),
    shop_name VARCHAR2(255),
    order_type VARCHAR2(255)
)

2、在部署oracle的服务器上编写sqlload配置文件

vim /data/soft/test.ctl

配置文件内容如下:

load data
characterset AL32UTF8
infile '/home/oracle/sql_load/test.csv'   # CSV文件路径可以指定多个
replace into table YG_IS.TEMP   #删除旧记录(用 delete from table 语句),替换成新装载的记录
fields terminated by ',' #数据中每行记录用 "," 分隔
Optionally enclosed by '"' #数据中每个字段用 '"' 框起,比如字段中有 "," 分隔符时
trailing nullcols #表的字段没有对应的值时允许为空(就是说,如果要导入的字段在这里没有填写,那么它就是null,填写后才会导入该值)
(
order_time date "DD/MM/YYYY HH24:MI:SS",
pay_time date "DD/MM/YYYY HH24:MI:SS",
inflow_time date "DD/MM/YYYY HH24:MI:SS",
order_no ,
out_order_no ,
warehouse_code ,
merchant_code ,
business_subject ,
order_status ,
shop_name ,
order_type
)

3、在oracle用户下,执行命令:
进入oracle用户方法:su - oracle
然后执行:sqlldr \'/ as sysdba\' control=/data/soft/sqlload/test.ctl log=test.log;

4、注意事项:
a.导入的数据必须为csv或者为txt格式
b.导入的csv文件的编码格式需要设置成utf-8,否则导入后会出现乱码
c.ctl文件中, into table 的时候,一定要在表名前面加用户名名称,例如:yg_is.temp

猜你喜欢

转载自blog.csdn.net/weixin_44275820/article/details/108361478