10w数据oracle入库总结

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条坏数据左右就会停止再插入,之前插入成功的数据也不会回退,所以建议给某个字段值打上标记,方便数据回退和修改,导入完成后去重也是可以的。日志比较详细在指定路径下可查看。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容