我有一个超过300万个记录XLS文件,我需要使用python2.7将其转储到oracle12cdb(直接转储)中。在
我使用Cx峎Oracle python包来建立与Oracle的连接,但是读取和转储XLS(使用openpyxl pckg)的速度非常慢,并且性能会降低数千条/百万条记录。在
从脚本的角度来看,有两种方法-
我尝试过大容量加载,方法是读取数组中的所有值,然后使用cursor prepare(带绑定变量)和cursor将其转储太多了。这个不能很好地处理大量数据。
数据的迭代加载抓到了。甚至这种方式存在性能问题。
作为最佳实践,我可以部署哪些选项和技术/软件包来将这些数据从XLS加载到Oracle数据库?是否建议通过脚本来加载此数据量,或者我是否应该使用ETL工具? 到现在为止,我只有选择通过python脚本,所以请回答前一个
基本上,对于大容量的数据,任何语言都要强调I/O,除了C。最好的方法是使用数据库供应商提供的本机工具/实用程序。 对于oracle,最合适的是SQL Loader。在
有关快速教程,请参阅此链接 http://www.thegeekstuff.com/2012/06/oracle-sqlldr/
这里是…运行SQL加载器并返回返回代码、输出和错误的示例代码
Excel还提供了ODBC支持,因此如果您有驱动程序,就可以直接从Excel泵送到Oracle。也就是说,任何涉及到在内存中转换大量数据(从Excel内部使用的数据)然后将其传递给DB的操作,其性能可能不如专门的批量操作,后者可以优化以使用更少的内存。使用Python只会为任务添加另一层(Excel到Python再到Oracle),尽管可以将其设置为使用streams。在
如果可以将excel文件导出为CSV,则只需使用
sqlldr
在db中加载文件相关问题 更多 >
编程相关推荐