【发布时间】:2017-07-29 10:55:12
【问题描述】:
我正在努力在将 csv 插入数据库之前对其进行验证。我已经完成了将它们插入数据库的工作,但不确定如何验证重复记录并仅将重复记录插入数据库。CSV 如下所示,我们可以在 CSV 中将 ProdID 作为重复项接收
ProdID,Name,Color,Availability
P01,Product1,Red,Yes
P02,Product2,Blue,Yes
P03,Product3,Yellow,No
P01,Product4,Red,Yes
P04,Product5,Black,Yes
该表有五个字段,其中一个字段是重复字段
class Products
{
static void Main(string[] args)
{
string location = "\Products.csv";
List<Products> ProductsList= ReadInCSV(location);
var connStr = ConfigurationManager.ConnectionStrings["ProgConnectionString"].ConnectionString;
// Need to validate them before putting them in to the table
string sqlString = "INSERT INTO PRODUCTS (ProdID,Name,Color,Availability,Duplicate) VALUES (@ProdID,@Name,@Color,@Availability,@Duplicate );";
for (int i = 0; i < ProductsList.Count; i++)
{
using (MySqlConnection conn = new MySqlConnection(connStr))
using (MySqlCommand comm = new MySqlCommand(sqlString, conn))
{
comm.Parameters.Add("@ProdID", MySqlDbType.VarChar).Value = ProductsList[i].ProdID;
comm.Parameters.Add("@Name", MySqlDbType.VarChar).Value = ProductsList[i].Name;
comm.Parameters.Add("@Color", MySqlDbType.VarChar).Value = ProductsList[i].Color;
comm.Parameters.Add("@Availability", MySqlDbType.VarChar).Value = ProductsList[i].Availability;
comm.Parameters.Add("@Duplicate", MySqlDbType.VarChar).Value = "Yes";
conn.Open();
comm.ExecuteNonQuery();
conn.Close();
}
}
}
}
我不确定如何检查 csv 中的重复记录并只插入重复的记录。
【问题讨论】:
-
我不清楚你在问什么?您是否只想插入不同的记录(即排除重复记录)?还是您只想插入重复的记录(如果是这样,您是想要重复的所有副本还是只需要代表重复的单个实例)?
-
哪些是“csv中的重复记录”?在我看来,它们都不同。
-
@maccettura 我只需要插入重复的记录。这里 P01 正在重复,我只需要将这两条记录插入到表中
-
@DourHighArch 只需要查找 ProdID 并在重复时插入数据库