Oracle sqlldr 导入碰到的问题
背景:最近两天使用sqlldr将csv文件导入到oracle数据库准备对数据分析。碰到了许多问题,记录下对这些问题的解决思路。对于数据库不太熟悉的可参考。
分析:由于对数据库不是非常熟,创建表时根据csv文件中的数据来选取字节长度、数据类型,初看感觉没啥问题,但是导入数据时,总是各种问题(如无效数字、字节长度过长、字符集等)。
1、创建表思路
- csv文件400M不到,数据240万行左右。选取了20多行数据作为测试数据。
- 如果自己不熟悉数据库,建议所有数据类型选择varchar2,长度可适当放大。
- 用测试数据导入无问题,则对数据库数据类型长度进行挨个适当调整。
因数据表的问题,导致出现类"ORA-01722: 无效数字"、错误ORA-29275:部分多字节字符等问题。
测试过程中:csv格式可用notepad++打开,以便观测数据格式,对ctl文件进行调整。
2、导入数据
基本上解决了小数据导入问题,但是在完整数据导入时,出现了“ SQL*Loader-510: 数据文件中物理记录超过最大限制 (1048576) SQL*Loader-2026”问题
解决思路:
- 1、检查并扩充了表空间;(问题未解决)
- 2、以为数据太大,将sqlldr并行运行;(问题未解决)
- 3、未尝试调整