社区
C#
帖子详情
.net ,oracle 如何批量插入数据效率更高?
风沙不去驼铃声
2009-02-18 12:04:58
我有一些数据,来源于文件.
.net读取文件中的数据,数据的条数会有上百条,但是不固定.
如果循环使用 insert 语句添加到oracle数据库,速度会很满.
请教各位高手,给个方法解决.
我是.net,oracle 新手,给断调用过程的代码,将感激不尽.多谢各位.
...全文
572
10
打赏
收藏
.net ,oracle 如何批量插入数据效率更高?
我有一些数据,来源于文件. .net读取文件中的数据,数据的条数会有上百条,但是不固定. 如果循环使用 insert 语句添加到oracle数据库,速度会很满. 请教各位高手,给个方法解决. 我是.net,oracle 新手,给断调用过程的代码,将感激不尽.多谢各位.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cppfaq
2009-02-18
打赏
举报
回复
其实楼主可以直接只用SqlBulkInsert来导数据
如果必须用.net code来导入的话,可以参考
http://blog.csdn.net/axman/archive/2008/03/20/2200840.aspx
cppfaq
2009-02-18
打赏
举报
回复
建立一个DataTable,然后使用OracleDataAdapter.Update(dt)
不过如果数据只有几百条的话,效率应该不是啥问题吧
liucuiqiang
2009-02-18
打赏
举报
回复
一条一条更新也可以,只要这个链接一直连着,不要插入一条就重新开链接,速度应该不成问题
风沙不去驼铃声
2009-02-18
打赏
举报
回复
忘了一点. 数据来源是个 xml文件
冷月孤峰
2009-02-18
打赏
举报
回复
用4楼的方法
oracle 使用OracleDataAdapter.Update(dt)
sql 使用SqlDataAdapter.Update(dt)
wolf1118baby
2009-02-18
打赏
举报
回复
写存储过程
lovehongyun
2009-02-18
打赏
举报
回复
http://topic.csdn.net/u/20090217/15/046d1a4a-65db-4eaf-9e00-e6c96071e169.html
看我8楼的回复.
j45kp
2009-02-18
打赏
举报
回复
/// <summary>
/// Excel 导入到数据库
/// </summary>
/// <param name="excelFile"></param>
/// <param name="sheetName"></param>
/// <param name="tableName"></param>
/// <param name="connectionString"></param>
public static void TransferData(string excelFile, string sheetName, string tableName, string connectionString)
{
DataSet ds = new DataSet();
try
{
//获取全部数据
string strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + "Data Source=" + excelFile + ";" + "Extended Properties=Excel 8.0;";
OleDbConnection conn = new OleDbConnection(strConn);
conn.Open();
string strExcel = "";
OleDbDataAdapter myCommand = null;
strExcel = string.Format("select * from [{0}$]", sheetName);
myCommand = new OleDbDataAdapter(strExcel, strConn);
myCommand.Fill(ds, sheetName);
//如果目标表不存在则创建
string strSql = string.Format("if object_id('{0}') is null create table {0}(", tableName);
foreach (System.Data.DataColumn c in ds.Tables[0].Columns)
{
strSql += string.Format("[{0}] varchar(255),", c.ColumnName);
}
strSql = strSql.Trim(',') + ")";
using (System.Data.SqlClient.SqlConnection sqlconn = new System.Data.SqlClient.SqlConnection(connectionString))
{
sqlconn.Open();
System.Data.SqlClient.SqlCommand command = sqlconn.CreateCommand();
command.CommandText = strSql;
command.ExecuteNonQuery();
sqlconn.Close();
}
//用bcp导入数据
using (System.Data.SqlClient.SqlBulkCopy bcp = new System.Data.SqlClient.SqlBulkCopy(connectionString))
{
bcp.SqlRowsCopied += new System.Data.SqlClient.SqlRowsCopiedEventHandler(bcp_SqlRowsCopied);
bcp.BatchSize = 100;//每次传输的行数
bcp.NotifyAfter = 100;//进度提示的行数
bcp.DestinationTableName = sheetName;//目标表
bcp.WriteToServer(ds.Tables[0]);
}
}
catch (Exception ex)
{
throw ex;
}
}
private static void bcp_SqlRowsCopied(object sender, System.Data.SqlClient.SqlRowsCopiedEventArgs e)
{
//Response.Write("拷贝完成");//此事件处理函数是在批量导入完成以后进行的。
}
lovehongyun
2009-02-18
打赏
举报
回复
[Quote=引用 3 楼 SealedLove 的回复:]
你可以参考下面的文章:
使用SqlBulkCopy类加载其他源数据到SQL表
http://www.cnblogs.com/SealedLove/archive/2008/12/19/1358186.html
[/Quote]
只能应用在sql server上
oracle 使用OracleDataAdapter.Update(dt)插入数据就行了.
SealedLove
2009-02-18
打赏
举报
回复
你可以参考下面的文章:
使用SqlBulkCopy类加载其他源数据到SQL表
http://www.cnblogs.com/SealedLove/archive/2008/12/19/1358186.html
oracle
data provider ODP
.NET
针对
oracle
的帮助类库 累死sqlhelper
SqlBulkCopy
批量插入
数据
(实例)
SqlBulkCopy SQL2005
批量插入
数据
性能优化
.Net
连接
Oracle
Oracle
连接
数据
库,这是一个
.net
连接
Oracle
的案例,里面有分页功能
.NET
数据
库通用接口SQLSERVER和
ORACLE
.NET
数据
库通用接口SQLSERVER和
ORACLE
.net
,c#,SQLSERVER,
ORACLE
支持两种
数据
的通用类
Apress.Pro.ODP
.NET
.for.
Oracle
.Database.11g.Mar.2010.rar
Apress.Pro.ODP
.NET
.for.
Oracle
.Database.11g.Mar.2010.rar
C#
111,119
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章