.net2.0后ado.net提供了一个快速导入sqlserver的方法sqlbulkcopy.导入效率非常高.
包装了一个简单的sqlbulkcopy类,用于数据从datatable导入到sqlserver.代码如下:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Text;
namespace taihe.framework.tools.import
{
public class SqlBulkCopy
{
private int timeout = 1800;
private System.Data.SqlClient.SqlBulkCopy sqlBulkCopy = null;
public SqlBulkCopy()
{
}
public SqlBulkCopy(int timeout)
{
this.timeout = timeout;
}
public void WriteToDataBase(DataTable source, string tableName,bool useTransaction,string dataBaseConnString,bool clearTable)
{
//判断表是否存在
taihe.framework.data.datalayer.SqlDataHelper dataHelper = new data.datalayer.SqlDataHelper(dataBaseConnString);
dataHelper.IsConnString = true; //使用数据库连接字符串创建sqlserver操作对象
string sql = "select * from sys.objects where type='U' and name='" + tableName + "'";
DataTable dt = dataHelper.ExecuteDataSet(sql).Tables[0];
if (dt.Rows.Count > 0)
{
if (clearTable == true)
{
sql = "drop table " + tableName + ""; //清除已存在的表
}
else
{
throw new Exception("要创建的表已存在");
}
}
this.CreateTable(dataHelper, source.Columns, tableName);
sqlBulkCopy = new System.Data.SqlClient.SqlBulkCopy(dataBaseConnString);
if (useTransaction == true)
{
sqlBulkCopy = new System.Data.SqlClient.SqlBulkCopy(dataBaseConnString, SqlBulkCopyOptions.UseInternalTransaction); //导入的数据在一个事务中
}
sqlBulkCopy.DestinationTableName = tableName;
foreach (DataColumn c in source.Columns)
{
sqlBulkCopy.ColumnMappings.Add(c.ColumnName, c.ColumnName);
}
sqlBulkCopy.BulkCopyTimeout = this.timeout; //超时时间
sqlBulkCopy.BatchSize = 3000; //每次传输3000行
sqlBulkCopy.WriteToServer(source);
}
public void CreateTable(taihe.framework.data.datalayer.SqlDataHelper dataHelper, System.Data.DataColumnCollection columns,string tableName)
{
StringBuilder sb = new StringBuilder();
sb.Append("create table [" + tableName + "] (autoId int identity(1,1),");
foreach (DataColumn column in columns)
{
sb.Append(" [" + column.ColumnName + "] " + this.GetTableColumnType(column.DataType) + ",");
}
string sql = sb.ToString();
sql = sql.TrimEnd(',');
sql += ")";
dataHelper.ExecuteNonQuery(sql);
}
private string GetTableColumnType(System.Type type)
{
string result = "varchar(255)";
string sDbType = type.ToString();
switch (sDbType)
{
case "System.String":
break;
case "System.Int16":
result = "int";
break;
case "System.Int32":
result = "int";
break;
case "System.Int64":
result = "float";
break;
case "System.Decimal":
result="decimal(18,4)";
break;
case "System.Double":
result = "decimal(18,4)";
break;
case "System.DateTime":
result = "datetime";
break;
default:
break;
}
return result;
}
}
}
分享到:
相关推荐
Z.SqlBulkCopy.Extension第三...使用时直接按照.net中sqlbulkcopy的使用方法调用执行就可以,很方便,没有什么特别的。所以,这是z项目人员,把整个库称为Extension扩展库的原因。 少赚点积分。相互支持。zip压缩文件。
在ASP.NET中,将Excel数据导入到数据库是一个常见的任务,特别是在处理大量结构化数据时。以下是一些关于这个主题的关键知识点: 1. **文件读取**:首先,你需要使用一个库来读取Excel文件。在.NET框架中,可以使用...
在讨论 *** 使用 SqlBulkCopy 高效插入数据到 SQL Server 的相关知识点之前,首先需要了解传统的数据插入方法与 SqlBulkCopy 的性能差异。在给定的文件描述中,提到了一个测试结果,指出使用 SqlBulkCopy 插入数据的...
4. **数据导入过程**: 通常,从Excel导入数据到SQL Server涉及以下步骤: - 打开Excel文件并读取数据。 - 创建SQL Server数据库连接。 - 构建INSERT或 Bulk Copy SQL语句,用于将Excel数据插入到数据库中。如果...
为了提高性能,可以使用SqlBulkCopy类一次性将大量数据插入到SQL Server表中,而不是逐行插入。 8. **异常处理**: 在代码中加入适当的try-catch块,捕获可能出现的错误,如文件不存在、数据库连接失败、数据格式...
在Asp.net开发环境中,Excel数据的导入是一项常见的任务,特别是在需要从电子表格批量导入数据到数据库时。这里我们将深入探讨如何在Asp.net中实现Excel数据的导入,并将其存储到SQL Server 2005数据库中。 首先,...
在ASP.NET(C#)开发中,经常需要处理从Excel文件导入数据到SQL Server 2005这样的任务。这个过程涉及到多个技术层面,包括文件读取、数据处理和数据库交互。下面将详细介绍这个过程中的关键知识点。 首先,我们需要...
`附件1:SqlBurkCopy.zip`可能包含了一个使用`SqlBulkCopy`的完整示例项目,包括如何创建数据源、配置`SqlBulkCopy`对象以及处理导入过程。解压并运行此项目,你可以看到`SqlBulkCopy`的实际效果,从而更好地理解和...
ASP.NET是一种基于.NET Framework...总结来说,这个ASP.NET项目实现了从Excel文件导入数据到SQL Server 2008的功能,为Web应用的数据管理提供了便利。对于学习和开发类似的解决方案,了解上述步骤和技巧是非常重要的。
在C#中,我们可以使用ADO.NET的SqlBulkCopy类来高效地批量导入大量文本数据。首先,我们需要读取文本文件内容,将其转换为DataTable或List对象,然后通过SqlBulkCopy实例配置目标表信息并执行导入操作。例如: ```...
在.NET开发中,有时我们需要处理Excel数据,例如从Excel文件导入数据到数据库。这个经典实例展示了如何使用.NET框架实现这一功能。以下是一些关键知识点: 1. **命名空间引用**: - `System`: .NET Framework的...
在这个特定的项目中,"asp.net Excel导入SQLserver源码" 提供了一个功能,即从Excel文件批量导入数据到SQL Server 2000数据库中。这是一个常见的需求,特别是在数据迁移、数据处理或数据分析场景中。 在BS(Browser...
通过以上步骤,你可以实现ASP.NET中从Excel文件导入数据到SQL Server数据库的功能。这不仅适用于简单的数据导入,还可以根据需求进行更复杂的转换和验证,以满足不同的业务场景。记住,始终确保代码的健壮性和安全性...
通过以上步骤,我们可以实现从Excel文件导入数据到SQL Server 2005的功能。这个过程涉及文件操作、数据读取、数据库连接、SQL操作以及Web开发等多个方面,对于.NET开发者来说,这些都是必备的技能。在实际项目中,...
在ASP.NET开发中,将Excel文件导入数据库是一项常见的任务,特别是在数据处理和分析场景下。以下是对这个主题的详细说明: 1. **Excel文件读取**:首先,我们需要使用一个库来读取Excel文件。在.NET框架中,可以...
4. 将数据源连接到SqlBulkCopy:例如,从DataTable导入数据,使用`bulkCopy.WriteToServer(dataTable);` 5. 最后,记得关闭SqlBulkCopy和数据库连接。 在性能优化方面,有以下几点需要注意: 1. 减少数据库交互:...
总结,C#中的`SqlBulkCopy`类提供了高效、灵活的方式来批量导入数据到SQL Server数据库。通过正确配置映射、事务和性能选项,可以实现快速且可靠的数据迁移。在处理大量数据时,使用此工具可以显著提高应用程序的...
本篇将详细阐述如何使用ASP.NET结合DataTable和DataGrid实现Excel数据的导出,以及如何将Excel数据高效地导入到SQL数据库。 首先,我们来看导出Excel的过程。在ASP.NET中,有两种主要的导出方法:使用DataTable和...
4. 导入数据:在导入数据到数据库之前,可能需要进行数据清洗和验证。例如,检查数据类型、格式、约束等。完成后,可以使用SqlBulkCopy类将DataTable中的数据批量导入SQL Server数据库。 5. 错误处理和资源释放:在...