大数据量的情况下怎么将数据导入到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
上一篇: 分布式锁