使用C#Asp.net导入CSV文件时,避免在SQLServer中添加重复项

时间:2016-08-28 08:17:53

标签: c# mysql asp.net sql-server sqlbulkcopy

所以,我有一张名为Curr的桌子。我的主键是CurrID(自动增量),我有外键CouID。我的csv文件如下所示:

|1|12345| 
|2|23456| 

每次我向我的csv文件添加值时,我都会将其上传到数据库中。例如:

|1|12345| 
|2|23456| 
|3|12345|
|4|93821|

现在的问题是我不希望它被添加,因为它已经在数据库中了。数据库应如下所示:

|1|12345| 
|2|23456| 
|4|93821|

请帮帮我。这是我的代码。

    string csvPath = Server.MapPath("~/Files/") + Path.GetFileName(Curr_Upload.PostedFile.FileName);
    Curr_Upload.SaveAs(csvPath);

    DataTable dt = new DataTable();
    dt.Columns.AddRange(new DataColumn[2] {new DataColumn("CurrID", typeof(int)) 
            new DataColumn("CouID", typeof(int)) });


    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(','))
            {
                lbl_status.Text = row;
                dt.Rows[dt.Rows.Count - 1][i] = cell;
                i++;

            }
        }
    }


    using (connection = new SqlConnection(constring))
    {
        using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(constring))
        {
            sqlBulkCopy.DestinationTableName = "dbo.Curr";
            connection.Open();
            sqlBulkCopy.WriteToServer(dt);
            connection.Close();
        }
    }
}

0 个答案:

没有答案