一、项目需求
项目需要自动、定时读取excel文件导入到Oracle数据库中。
这里只涉及导入CSV格式的文件,自动、定时使用任务计划程序执行BAT实现。
二、CSV文件导入Oracle数据库
将下面代码写入记事本中,格式修改为ctl
OPTIONS (skip=1,rows=128)
LOAD DATA
INFILE "D:\table\需要导入的表.csv"
DISCARDFILE "D:\table\不满足条件的记录.txt"
truncate
INTO TABLE T1_ITEM_NO
when 序号<>"null"
Fields terminated by ","
Optionally enclosed by '"'
trailing nullcols (序号)
- OPTIONS:CMD命令行参数;skip=1表示跳过第一行;rows表示每次提交的记录数,默认值是64,可以自定;
- INFILE:指定需要导入的数据表;
- DISCARDFILE:输出不满足条件(即下行中when语句)的记录;
- TRUNCATE:执行插入前清空表;还可以使用append(追加新记录),更多内容可以查看文后参考资料。(20230301更新)
- INTO TABLE:插入到某张表;
- WHEN:条件语句;
-
Fields terminated by ",":数据中每行记录用 ","分隔;
-
Optionally enclosed by '"' : 数据中的字段用 双引号 " 括起;
-
trailing nullcols:表的字段没有对应值时允许为空;
三、BAT调用 ctl文件
sqlldr 数据库用户名/密码@库名 control=ctl文件路径
四、参考资料