要实现ASP.NET对CSV文件进行导入数据库的操作,首先我们需要相应的IDE,例如Visual Studio。然后你需要建立一个ASP.NET项目,并添加几个命名空间。
以下代码示例将详细说明如何实现此操作:
using System;
using System.Data;
using System.Data.OleDb;
using System.Data.SqlClient;
public partial class CS : System.Web.UI.Page
{
protected void importCSV_Click(object sender, EventArgs e)
{
//先上传CSV文件
string csvPath = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.SaveAs(csvPath);
//创建CSV的连接
string csvConnectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source="{0}";Extended Properties="text;HDR=yes;FMT=Delimited"", Path.GetDirectoryName(csvPath));
//创建CSV用的OLEDB的连接,和适配器
using (OleDbConnection con = new OleDbConnection(csvConnectionString))
{
using (OleDbCommand cmd = new OleDbCommand("select * from [" + Path.GetFileName(csvPath) + "]", con))
{
using (OleDbDataAdapter sda = new OleDbDataAdapter(cmd))
{
DataTable dt = new DataTable();
sda.Fill(dt);
//批量导入数据库
string consString = ConfigurationManager.ConnectionStrings["constr"].ConnectionString;
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(consString))
{
//设置数据库表名
sqlBulkCopy.DestinationTableName = "dbo.customers";
//[optional]:映射列
sqlBulkCopy.ColumnMappings.Add("column1", "database_column1");
sqlBulkCopy.ColumnMappings.Add("column2", "database_column2");
sqlBulkCopy.ColumnMappings.Add("column3", "database_column3");
// 写入数据
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}
}
}
}
}
注意:在“dbo.customers”处将“customers”替换为你数据库中的实际表名,在数据库的列的映射部分,将“column1”、“column2”和“column3”替换为CSV文件中的实际列名,将“database_column1”、“database_column2”和“database_column3”替换为数据库表中的实际列名。
此代码适用于SQL Server数据库,如果你使用的是其他数据库(例如MySQL,Oracle等),你需要更改相应的连接字符串和SqlBulkCopy操作。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/172211.html