дубликаты товаров добавляются при импорте файлов CSV - PullRequest
0 голосов
/ 03 февраля 2012

Я использую приведенный ниже код для импорта CSV-файлов в SQL Server 2008, проблема в том, что он добавляет дубликаты записей в таблицу, как я могу проверить, чтобы избежать импорта дубликатов записей, ниже приведен код, который я использую, я скопировал откуда-то и забыл ссылку, так что не могу сослаться на нее, код работает нормально, так как импортирует данные, но он не проверяет перед импортом, первичный ключ, который я использую для моей таблицы, является productid, ниже приведен код, любой Мы будем благодарны за помощь или предложение:

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(); 

}

1 Ответ

1 голос
/ 03 февраля 2012

Обычно вы должны иметь возможность установить в поле PK значение productid. Вставка не удастся автоматически, если она дублируется ...

Вы также можете отсортировать таблицу данных, пройти и обработать дублированные строки с некоторой логикой.

Другим решением было бы добавить productid в какой-либо массив для поиска и проверить его перед добавлением новой строки.

НТН,

...