Member 13660172 Ответов: 1

Сравните два csv файла с одинаковыми столбцами


Мне нужно импортировать два csv-файла в таблицу базы данных mysql, но когда я импортирую второй файл, я хочу сравнить его с первым файлом, вставленным в базу данных, и если есть разница в строке, я вставлю строку второго файла.

Я попытался импортировать непосредственно второй файл, но результат в базе данных все еще с данными первого файла также не организован.

Сначала я загрузил и сохранил первый файл, затем, когда я загрузил второй файл, я не увидел в таблице базы данных правильных данных второго файла, я хочу, чтобы метод обновился, если есть разница, или добавил новые строки, если они существуют во втором файле

Вот мой способ, чтобы импортировать и сохранить первый CSV-файл

Что я уже пробовал:

private void Import_Bilan_Click(object sender, EventArgs e)
        {
            DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.
            if (result == DialogResult.OK) // Test result.
            {
                string file = openFileDialog1.FileName;
                string[] f = file.Split('\\');

                // to get the only file name
                string fn = f[(f.Length) - 1];
                string path = Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
                string dest = path + @"\upload\" + fn;

                //to copy the file to the destination folder
                File.Copy(file, dest, true);
                MessageBox.Show("File Uploaded !!");

                //to copy the file to the destination folder
                File.Copy(file, dest, true);

                MySqlConnection con = new MySqlConnection("datasource=localhost;database=altares;port=3306;username=root;password=root;SslMode=none;AllowUserVariables=true");
                var msbl = new MySqlBulkLoader(con)
                {
                    TableName = "exercices",
                    FieldTerminator = ";",
                    FileName = dest,
                    NumberOfLinesToSkip = 1,

                };
                msbl.Columns.AddRange(new[] { "siren", "designation", "annee", "@discard", "@discard", "@discard", "@discard", "@discard", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "Ak", "AL", "AM", "AN", "AO", "AP", "AQ", "AR","@discard", "AT", "AU", "AV", "AW", "AX", "AY", "CS", "CT", "CU", "CV", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS","YP" });

                msbl.Load();
                con.Close();

                MessageBox.Show("Bilan bind to database !!");
            }
        }

1 Ответов

Рейтинг:
8

Gerry Schmitz

1) Загрузите каждый Csv-файл в свою собственную временную таблицу.
2) "сохранить" все записи в "таблице 2".
3) "сохранить" все записи в "таблице 1", которых нет в таблице 2.

(Я предполагаю, что у ваших записей есть "ключи"; как еще вы могли бы их "сопоставить"?)