欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-05 11:50:44
...

前言:大数据量的情况下,导入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