首页 新闻 会员 周边 捐助

插入 大量数据至 oracle

0
悬赏园豆:100 [已解决问题] 解决于 2009-09-16 12:30

现需要将20万条记录从SQL Server中插入至Oracle中,我用C#程序插入需要时间太长。

大家有没有什么办法可以提高插入效率。

我的代码:

Code

注:1,需要用.net程序实现,而非SQL Loader等外部方法。

      2,根据性能分析,主要时间消耗在插入至Oracle中,而非读取SQL Server上。读取SQL Server需   要时间为8.秒左右。

Jerry Chou的主页 Jerry Chou | 老鸟四级 | 园豆:2642
提问于:2009-09-16 10:17
< >
分享
最佳答案
0

oracle 应该有批量更新数据库的方法吧。SQLsercer就支持,用c#编写代码,但是Oracle中不确定,但是也应该有吧,找一找!

用代码的话,在大数据量的情况下,效率肯定会低点,但是代码写也有相对高低之分啊.用批量更新应高会快点。

http://oracle.zjunbsn.com/content.asp?id=2901 参考

收获园豆:90
邢少 | 专家六级 |园豆:10926 | 2009-09-16 11:45
其他回答(2)
0

我记得SQL Server的DTS可以在他们之间转换数据。

你也可以下载这个pdf参考一下:http://rapidshare.com/files/280694380/SQLSERVER______ORACLE_________.pdf.html

收获园豆:10
Gnie | 园豆:468 (菜鸟二级) | 2009-09-16 11:15
感谢回复。 我需要的是用.net code来实现该功能/性能需求,而非外部工具。
支持(0) 反对(0) Jerry Chou | 园豆:2642 (老鸟四级) | 2009-09-16 11:27
0

若有翻过 ado.net 的书籍就知做法。

其中一种,用「分号(;)」串接多句写入的 sql 语句,(SQL server 也可这样做)
再丢入一次执行 ExecuteNonQuery (只执行一次,就可批更新)。

http://www.cnblogs.com/WizardWu/archive/2008/11/27/1342174.html

 

(四) Oracle 的「批次 (batch) 更新」、「批次新增」、「批次删除」语法

Oracle 仍可如 SQL Server、Sybase 数据库,用「分号 (;)」隔离多个 SQL statement,只是 Oracle 前后要再加上 begin、end 关键词,例如:

string strSql = "begin insert into table01(id,name) values(99,'test'); insert into table01(id,name) values(99,'test'); end;";
string strSql = "begin update table01 set name='test2' where id=99; update table01 set name='test2' where id=99; end;";
string strSql = "begin delete from table01 where id=99; delete from table01 where id=19; end;";

因 Oracle 语法较严谨,不能直接在 SQL 语句中,出现「;」等特殊符号。

WizardWu | 园豆:1402 (小虾三级) | 2009-09-16 12:29
该拼接法对上万条记录并不起作用。
支持(0) 反对(0) Jerry Chou | 园豆:2642 (老鸟四级) | 2009-09-16 12:35
该拼接法对上万条记录并不起作用。
支持(0) 反对(0) Jerry Chou | 园豆:2642 (老鸟四级) | 2009-09-16 12:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册