从文本文件中向一张表导数据。文本文件中有300万条记录,现在是每1条commit一次,感觉非常慢。
写入数据库前有一个简单的逻辑处理,用存储过程处理。感觉就是insert这个步骤消耗时间长。
每1000条提交一次是否会好些?

解决方案 »

  1.   

    现在是循环读取每一行文本,写数据库,然后commit,直到循环结束,每循环一次就commit
      

  2.   

    pl/sql写个循环,每2000条,一commit
      

  3.   

    分批次commit比较好,另外可以将需要插入的数据先存入数组,使用insertall语句插入,对效率也有提高
      

  4.   

    文本导入数据库,最好的方式还是使用sqlldr工具。因为你提交一次insert语句,oracle就要做一次句法分析,时间主要就耗在这个上面了。当然了,如果你是自己写程序导入,那最好使用预处理的insert语句,而不要自己拼装sql语句。