【发布时间】:2015-06-04 10:06:24
【问题描述】:
我有一个包含 7 列的 CSV 文件,用户必须上传该文件才能将其添加到数据库中。 我在阅读 CSV 并将所有信息放在一个表中找到了一些帮助,但是,数据必须分布在三个表中。
我将所有数据插入到 1 个表中的代码:
protected void Upload(object sender, EventArgs e)
{
//Upload and save the file
string csvPath = Server.MapPath("~/Temp/") + Path.GetFileName(FileUpload1.PostedFile.FileName);
FileUpload1.SaveAs(csvPath);
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[7] {
new DataColumn("Title", typeof(string)),
new DataColumn("Artist", typeof(string)),
new DataColumn("Years", typeof(string)),
new DataColumn("Position", typeof(string)),
new DataColumn("Senddate", typeof(string)),
new DataColumn("Sendfrom", typeof(string)),
new DataColumn("Sendtill", typeof(string))});
string csvData = File.ReadAllText(csvPath);
foreach (string row in csvData.Split('\n'))
{
if (!string.IsNullOrEmpty(row))
{
dt.Rows.Add();
int i = 0;
foreach (string cell in row.Split(';'))
{
dt.Rows[dt.Rows.Count - 1][i] = cell;
i++;
}
}
}
string consString = ConfigurationManager.ConnectionStrings["connection"].ConnectionString;
using (SqlConnection con = new SqlConnection(consString))
{
using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(con))
{
//Set the database table name
sqlBulkCopy.DestinationTableName = "dbo.ingevoerd";
con.Open();
sqlBulkCopy.WriteToServer(dt);
con.Close();
}
}
}
如您所见,它需要 7 列,并将它们放在表中 [dbo].[ingevoerd]
如何拆分数据以将“标题”和“年份”列放入名为 Song 的表中,将“艺术家”列放入名为 Artiest 的表中,以及“位置”、“发送日期”、“发送自”和“发送至” ' 在名为 Lijst 的表中?
如需了解更多信息,请发表评论。
【问题讨论】:
-
恕我直言,您应该改用 SSIS 来完成此任务。
标签: c# asp.net sql-server database csv