将txt或者csv数据导入数据库最方便的方法就是使用sqlldr,使用sqlldr必须有一个控制文件,控制文件能把外部数据和数据库的表和列联系起来。
新建数据表
1 | CREATE TABLE "TENVAIR"."TEST" |
数据格式
1 | EMISS_GRIDID,X,Y,EMISS_TYPE,POLLUTION_TYPE,JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC,TOTAL |
编写控制文件t.ctl
1 | load data |
infile ‘EMISS_MEIC.txt’ 表示要导入的文本名为EMISS_MEIC.txt,也可以在执行sqlldr的时候加data=EMISS_MEIC.txt
append/insert/replace/truncate into table TABLE_NAME append表示使用追加的方式将数据写入表中;insert 表示导入空表,有数据则停止;replace表示原来表中如果有数据,则会被删除(用delete from table语句);truncate表示原来表中如果有数据,则会被清除(用truncate table语句)
fields terminated by ‘,’ 数据中每行记录用”,”分隔
TRAILING NULLCOLS 表的字段没有对应的值时允许为空
使用sqlldr导入
如果数据文件是从windows传到linux操作系统上的,需要转换一下文件格式dos2unix EMISS_MEIC.txt
sqlldr userid=user/'passwd' control=t.ctl data=EMISS_MEIC.txt readsize=4194304
查看导入结果
从日志文件中我们可以看到导入详情,导入1279319条数据,耗时33秒,效率还是非常高的!