【发布时间】:2014-09-26 22:18:00
【问题描述】:
我正在使用 SQL Server 2014。我的 Web 应用程序的功能之一是上传 CSV 文件,并将数据导入到我的数据库(称为 TMPA)中的表(称为 TF)中。
我不知道该怎么做。
string excelPath = Server.MapPath("~/Files/") + Path.GetFileName(FileUpload2.PostedFile.FileName);
FileUpload1.SaveAs(excelPath);
SqlConnection con = new SqlConnection(@"Data Source=SAMSUNG-PC\SQLEXPRESS;Initial Catalog=TMPA;Persist Security Info=True");
StreamReader sr = new StreamReader(excelPath);
string line = sr.ReadLine();
string[] value = line.Split(',');
DataTable dt = new DataTable();
DataRow row;
foreach (string dc in value)
{
dt.Columns.Add(new DataColumn(dc));
}
while (!sr.EndOfStream)
{
value = sr.ReadLine().Split(',');
if (value.Length == dt.Columns.Count)
{
row = dt.NewRow();
row.ItemArray = value;
dt.Rows.Add(row);
}
}
SqlBulkCopy bc = new SqlBulkCopy(con.ConnectionString, SqlBulkCopyOptions.TableLock);
bc.DestinationTableName = "TF";
bc.BatchSize = dt.Rows.Count;
con.Open();
bc.WriteToServer(dt);
bc.Close();
con.Close();
我试过这段代码,但它不起作用。
PS:TF 的列比 CSV 文件的多:某些列是计算出来的,应该在每次插入后自动计算出来......
这是我的 CSV 文件的画布:4 列:
IdProduit,Mois,Reel,Budget
IdProduit 是字符串,Mois 是日期,Reel 和 Budget 是浮点数。
另一方面,我的 SQL Server 表如下所示:
|IdProduit|Mois|Reel|Budget|ReelPreviousMois|VarReelBudget|VarReelPrvM|...
|---------|----|----|------|----------------|-------------|-----------|-----
所有其他列应为空或自动计算。
帮帮我!
【问题讨论】:
-
是否必须通过asp.net进行? SSIS 不是更好的选择吗?
-
@ThanosMarkou 如果我没听错的话,这是一项功能,而不是一次性加载。
-
我建议您查看 CSVHelper 以避免自己摆弄 CSV 文件......
-
@rcdmk(我是她)正是它是网络应用程序的一个功能。这实际上是实习。我的客户-不是计算机科学专家或任何人-希望能够通过单击站点上的文件上传按钮将 csv 文件上传到数据库中-这是我无法做到的-,还有另一个 aspx 页面他可以在哪里看到桌子上的数据-这是我做的-
标签: c# sql asp.net sql-server csv