SQLOAD进行数据导入
-
使用原因
- 在使用文本进行大数据量导入的时候,很容易导致内存溢出的问题。
- sqlload作为oracle官方提供的大数据量的导入放大,在效率上具有很大的优势
- sqlload存在的不足
- 只支持文本类型(.txt,.csv)的导入,不支持excel等的文件的导入
- 对于服务器环境的要求较高(需要至少安装oracle的client)
-
准备文件
- 使用sqlldr导入需要准备两个文件一个是控制导入的ctl文件和存储数据的文本文件
-
导入语句
- sqlldr user/password control=test.ctl skip=1 load=200000 errors=100 rows=1000 bindsize=33554432
-
参数解析
- userid:后边跟的是数据库的名称以及密码
- control: 后边跟的是ctl文件的路径
- log:表示输出的日志
- rows:表示一次加载的行数,默认值为64,此处设置为xxx
- load:表示并不导入所有的数据,只导入跳过skip参数后的xxxx条数据
- errors:表示出错xxx次后,停止加载
- bindsize:表示每次提交记录缓冲区的大小,默认256k
-
控制文件(.ctl)
-
ctl的基本格式
-
参数介绍
- skip:从第几行开始导入
- rows:表示导入几行进行一次事务的提交,默认为64行
- infile:要导入的数据文件的位置
- append into table testTable:默认是INSERT
- APPEND 原先的表有数据 就加在后面
- INSERT 装载空表 如果原先的表有数据 sqlloader会停止 默认值
- REPLACE 原先的表有数据 原先的数据会全部删除
- TRUNCATE 指定的内容和replace的相同 会用truncate语句删除现存数据
- CHARACTERSET :表示导入的数据的编码的格式,默认为utf8
- fields terminated by ',':字段之间的分隔值为逗号
- terminated by whitespace :以空格为分割符
- optionally enclosed by :字段放在什么中间
- trailing nullcols:表示空值也可以导入
-
ctl的基本格式