SQLLDR的奇奇怪怪

一个项目使用达梦数据库的一个表,有1400万数据,意欲导入oracle数据库.
采用windows客户端工具DBeaver直接导出了csv文件,这个DOS格式的导出文件,直接埋下了祸根,导致后续一直sqlldr导入报错,转换为unix格式后,一切变得简单.
根据达梦数据库的建表语句,编辑oracle建表语句如下:

创建sqlldr的控制文件如下:

开始导入:

以上各个设置是经历很多次失败之后才成功的,在此再次吐槽下oracle,其实很多东西是可以简化处理的,非要搞得这么复杂!
其中一个重要的错误处理,是源导出csv文件由于是在windows客户端导出的,默认是dos格式的文本,在linux下必须转换为unix格式才可以!否则一定会遇见奇怪的格式转换问题,比如如下错误:

在vim下通过:set ff?可以看到DOS或UNIX的字样,DOS格式转换为UNIX的方法是在vim下执行:set ff=unix或者使用vim和sed的全文替换:%s/^M//g,注意^M在linux下通过同时摁下Ctrl+V+M得到.
实践证明,只要配置得当,比如关闭日志,配置和合适的缓存参数等,1400万行记录的csv文件,导入时间仅需30秒左右:

以下为csv文件内容示意:

标签:

《SQLLDR的奇奇怪怪》有1个想法

  1. [补充]在windows下导出csv文件时,format setting配置时行尾务必选择\n\r,这样在linux下面就不会有行尾的格式问题.

发表评论

电子邮件地址不会被公开。 必填项已用*标注