C#高效导入Excel到SQL Server:SqlBulkCopy与 OleDB 方法

需积分: 9 1 下载量 183 浏览量 更新于2024-09-09 收藏 30KB DOC 举报
“C#编程中将Excel数据导入到SQL Server数据库的两种方法的教程” 在C#编程中,经常需要处理Excel数据并将其导入到SQL Server数据库中。这里介绍两种高效的方法来完成这个任务。 方法一:使用SqlBulkCopy(BULK INSERT) SqlBulkCopy是C#中的System.Data.SqlClient命名空间提供的一个类,它允许快速地将大量数据从一个数据源(如DataTable或IDataReader)批量插入到SQL Server表中,类似于SQL Server的BULK INSERT语句。以下是使用SqlBulkCopy的基本步骤: 1. 首先,创建一个SqlBulkCopy实例,并指定目标数据库的连接字符串。 2. 设置SqlBulkCopy对象的属性,例如DestinationTableName(目标表名)。 3. 创建一个DataTable或者从Excel读取数据到一个DataTable。 4. 使用SqlBulkCopy.WriteToServer()方法将DataTable的数据写入数据库。 示例代码: ```csharp using System; using System.Data; using System.Data.SqlClient; // ... SqlConnection connection = new SqlConnection("your_connection_string"); SqlBulkCopy bulkCopy = new SqlBulkCopy(connection); bulkCopy.DestinationTableName = "YourTargetTable"; DataTable excelData = GetDataTableFromExcel("path_to_excel_file.xlsx", "Sheet1"); connection.Open(); bulkCopy.WriteToServer(excelData); connection.Close(); ``` 方法二:使用OLEDB(ADO.NET)读取Excel 另一种方法是使用OLEDB提供程序来读取Excel文件,然后逐行插入数据库。虽然这种方法比SqlBulkCopy慢,但在某些情况下可能是唯一的选择,特别是当无法使用SqlBulkCopy时。 以下是使用OLEDB读取Excel数据的步骤: 1. 创建一个OleDbConnection,指定连接字符串,该字符串通常包含Excel文件路径、提供程序信息以及Excel工作表名称。 2. 打开连接,创建OleDbCommand用于执行SELECT语句。 3. 使用OleDbDataAdapter填充一个DataSet或DataTable。 4. 遍历DataTable,使用INSERT语句逐条插入到SQL Server数据库。 示例代码: ```csharp using System; using System.Data; using System.Data.OleDb; // ... private void TransferData(string excelFile, string sheetName, string connectionString) { OleDbConnection excelConnection = new OleDbConnection(connectionString); excelConnection.Open(); string query = $"SELECT * FROM [{sheetName}]"; OleDbCommand command = new OleDbCommand(query, excelConnection); OleDbDataAdapter adapter = new OleDbDataAdapter(command); DataSet ds = new DataSet(); adapter.Fill(ds, "ExcelData"); excelConnection.Close(); // 插入数据库的逻辑,比如使用SqlCommand和循环 // ... } ``` 这两种方法各有优缺点。SqlBulkCopy适用于大量数据的快速导入,而OLEDB方法则更灵活,适合处理各种不同类型的Excel数据源。在实际开发中,应根据项目需求和性能要求选择合适的方法。