Productos duplicados agregados al importar archivos csv

c# csv import sqlbulkcopy

Pregunta

Estoy utilizando el siguiente código para importar los archivos csv en sqlserver 2008, el problema es que agrega registros duplicados en la tabla. ¿Cómo puedo verificar para evitar la importación de registros duplicados? A continuación se muestra el código que estoy usando. en algún lugar, y he olvidado el enlace, por lo que no puedo hacer referencia a él, el código funciona bien ya que importa los datos, pero no se comprueba antes de importar, la clave principal que estoy usando para mi tabla es productid, a continuación se muestra el código, cualquier ayuda o sugerencia. será apreciado:

SqlConnection con = new SqlConnection(@"Data Source=xxxxxxxx;Initial Catalog=xxxx;Persist Security Info=True;User ID=xx;Password=xxx");
    string filepath = Server.MapPath(FileUpload1.FileName);//"C:\\params.csv";
        StreamReader sr = new StreamReader(filepath);
        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 = "products";
        bc.BatchSize = dt.Rows.Count;
        con.Open();
        bc.WriteToServer(dt);
        bc.Close();
        con.Close(); 

}

Respuesta popular

Normalmente, debería poder configurar el campo PK para que sea el productid . Insertar fallaría automáticamente si está duplicado ...

También puede ordenar el DataTable, pasar y procesar las filas duplicadas con un poco de lógica.

Otra solución sería agregar el productid en algún tipo de matriz de búsqueda y verificarlo antes de agregar una nueva fila.

HTH,



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué