1、plsql工具
方法:
利用ODBC import对Excel数据进行导入,但是实际情况是只能预览出标题,看不到实际数据,数据格式没有问题,怀疑是工具、oracle以及excel还有操作平台的各种兼容问题。故放弃该方式
2、直接复制
方法:
select * from table_name for update
然后解锁后复制添加,缺点是面对10w数据非常容易崩溃,果断放弃
(推荐)3.sqlload
前提:需要安装oracle服务端或者客户端
方法:
1、将excel数据进行英文逗号的替换检查,进行初步数据清洗(可以选择alt+f11进行vb的正则替换,但是速度慢,容易未响应,不推荐,顺便附上vb代码)
Private Sub RegExp_Replace()
Dim RegExp As Object
Dim SearchRange As Range, Cell As Range
'此处定义正则表达式
Set RegExp = CreateObject("vbscript.regexp")
RegExp.Pattern = "[\t|\s|\r|\n]+"
'此处指定查找范围
Set SearchRange = ActiveSheet.Range("A1:N65536")
'遍历查找范围内的单元格
For Each Cell In SearchRange
Set Matches = RegExp.Execute(Cell.Value)
If Matches.Count >= 1 Then
Set Match = Matches(0)
Cell.Value = RegExp.Replace(Cell.Value, ".")
End If
Next
End Sub
然后进行csv格式的转换(逗号分隔,且注意编码方式UTF8),接着利用editplus利用正则对特殊符号\t等进行清理,对空格进行清理。
2、有了数据文件后,进行控制文件ctl的编写:
load data
CHARACTERSET AL32UTF8
infile 'csv数据文件路径'
append into table TABLE_NAME
fields terminated by ','
TRAILING NULLCOLS
(FIELD1,FIELD2 char(4000),FIELD3...)
注意:
1、编码问题会导致字段和数据的解析错位,所以一定要核对CHARACTERSET AL32UTF8
2、字段有默认的长度限制,所以超过255的需要进行长度的指定FIELD2 char(4000)
3、以windows举例,打开cmd输入命令:
sqlldr userid=账号/密码@ip:端口/库名 control=ctl控制文件路径 log=D:\test.log
运行结果成功版,如下:

ps:本地执行效率大概是65535条数据,差不多1个小时左右结束,局方大约几分钟时间。当然也有网络和设置的原因,总体来说是非常快的,毕竟是原厂家的外部数据导入方式。
如果有异常或者非法的数据会在本地出现一个bad后缀问本可以查看,一般默认积攒50条坏数据左右就会停止再插入,之前插入成功的数据也不会回退,所以建议给某个字段值打上标记,方便数据回退和修改,导入完成后去重也是可以的。日志比较详细在指定路径下可查看。