把oracle的中数据通过批处理导入sqlite中
想把oracle数据库中的数据(5张表,总共数据20W条左右)通过批处理导入到sqlite中去,这个批处理该怎么写呢?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
想把oracle数据库中的数据(5张表,总共数据20W条左右)通过批处理导入到sqlite中去,这个批处理该怎么写呢?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
首先推荐一个开源跨平台的SQLite图形化管理工具SQLiteStudio:
http://sqlitestudio.pl
用SQLiteStudio建5张等价于你Oracle里的那5张数据表.然后在CLI下用PHP的oci8扩展函数SELECT读取整张表数据,然后用PDO_SQLite开启事务,批量插入数据到SQLite数据库中.
注意CLI下运行的PHP脚本也是有内存限制(memory_limit)的,php.ini中设为-1,则表示不限制内存占用:
http://php.net/manual/zh/ini.core.php#ini.memory-limit
还有,保证你的机器内存能容纳20W数据(不算多),PHP7的数组更省内存,你也可以尝试使用PHP7进行操作,PHP7已经发布预览版RC1.CLI下操作完后不用的变量和数组记得unset释放掉内存.
Ubuntu(i5-3230M),开启事务时,PHP往SQLite插入100万条记录只用16秒,平均每秒插入62500条.期间会产生一个临时文件data.db3-journal,该文件主要用于SQLite事务回滚,在事务开始时产生,在事务结束时删除.当程序发生崩溃或者系统断电时该文件将留在磁盘上,以便下次程序运行时进行事务回滚.因为会在当前目录下产生临时文件data.db3-journal,所以需要保证PHP具有对该目录的写权限.
ETL kettle 可行否