使用sqlldr导入.csv文件数据到oracle相关配置 亲测可用

一、创建一个emp. ctl文件,内容具体配置如下  

Load data
CHARACTERSET ZHS16GBK  --编码
infile 'C:\Users\47641\Desktop\T_JCSJZX_DBS_JCJG.csv'  --要导入的数据
badfile 'impemp.bad'
Append 
into table T_JCSJZX_DBS_JCJG     --要导入到的table
fields terminated by ','
Optionally enclosed by '"'        --导入.csv数据时要加入  因为他的数据格式为“数据”
trailing nullcols               --如要导入源文件此列内容为空,在导入到数据库表中,此列内容就是null
(
--filler_10 filler,   --忽略第一列,因为导出文件的第一列表示字段顺序
XH,
CYXH,
CJR,
CJSJ "to_date(:CJSJ,'yyyy/mm/dd hh24:mi:ss')",
XGR,
XGSJ "to_date(:XGSJ,'yyyy/mm/dd hh24:mi:ss')",
ORGID,
SZLBBS
)

二、直接使用windows命令行执行以下语句即可

sqlldr  userid=cemis/[email protected]:1521/ORCL    control='C:\Users\47641\Desktop\emp.ctl'  log='C:\Users\47641\Desktop\log.log' skip=1  rows=5000   bindsize=5242880 readsize=10485760 

对上面命令行参数说明如下,如果想了解更多参数请参考百度

skip=1   --跳过记录数,从数据文件中,从第一行开始要计算要跳过的行数

rows=5000  --常规路径导入时:指绑定数组中的行数;直接路径导入时,指一次从数据文件只读取的行数,该参数同时
             受bindsize制约,如果rows*每行实际占用大小超出bindsize最大可用值,则rows自动降低达到bindsize

bindsize=5242880 --为绑定数组指定的最大可用空间,用来存贮一次读取的rows的记录,该值不能太小,至少要放入一条逻辑记录
             但设置太大也没什么作用。 每次提交记录的缓冲区的大小(字节为单位,默认256000)  我修改为5M=5242880

readsize=10485760 --    缓冲区大小,默认值:1048576单位字节,最大不超过20m,该参数仅当从数据文件读取时有效,
              如果是从近制文件读取数 据,则默认为64k  我修改为10M=10485760

你可能感兴趣的:(oracle)