如何高效的将excel导入到oracle?有很多朋友看了我的上一篇倒入sqlserver的文章后发消息问我是否支持oracle..
当然不可以了,但是和SqlServer的bcp对应,oracle也有自身的方法,只是稍微复杂些.
那就是使用oracle的sql*loader功能,而sqlldr只支持类似csv格式的数据,所以要自己把excel转换一下。
实现步骤:
用com组件读取excel-保存为csv格式-处理最后一个字段为null的情况和表头-根据excel结构建表-生成sqlldr的控制文件-用sqlldr命令导入数据
这个性能虽然没有sql的bcp快,但还是相当可观的,在我机器上1万多数据从读取包括转csv并且导入完成也不到4秒,而且导入过程代码比较简单,也同样没有循环拼接sql插入那么难以维护。这里也提个问题:处理csv文件的表头和最后一个字段为null的情况是否可以优化?除了我代码中的例子,我实在想不出其他办法。代码较长,请参考我的blog,同样里面的TransferData函数基本可以直接使用。
http://blog.csdn.net/jinjazz/archive/2008/07/21/2686526.aspx

解决方案 »

  1.   

    blog代码中的'需要替换为单引号,csdn的blog功能越改越差...连代码都不能正确解释。以前多三个点也就算了,起码其他的还正常,现在连插入个代码都要手工调整,结果还搞出个转义符来...
      

  2.   

    那能否顺便介绍下在.NET下,把SQLServer里的数据,转换成EXCEL文件的方法以前在某些程序里有看到.不过貌似都是自定义类来实现的```