Вопрос по csv, c# – C # - Сравнение двух файлов CSV и выдача вывода

1

Нужна небольшая помощь, у меня есть два источника информации, и информация экспортируется в два разных файла CSV различными программами. Предполагается, что они содержат одинаковую информацию, однако это то, что необходимо проверить.

Поэтому я хотел бы сделать следующее:

Возьмите информацию из двух файлов.сравнитьВыведите различия и в каком файле была разница (например, в файле A это содержалось, а в файле B - нет, и наоборот).

Файлы представляют собой 200 000 нечетных строк, поэтому они должны быть максимально эффективными.

Попытка сделать это с Excel, однако, оказалась слишком сложной, и я действительно изо всех сил пытаюсь найти способ программно.

Было бы полезно, если бы вы были более конкретны в отношении различий, которые вы ожидаете найти - различий в данных или в формате? Такое же количество строк? так далее... Benjol
Хорошо извини Различия должны быть в данных, есть один столбец идентификаторов и один столбец версии. Есть разное количество строк. Формат такой же, например, ID в первом столбце с количеством строк X и Version во втором столбце с таким же количеством строк. Порядок не будет таким же, строка в файле A не будет одинаковой в файле B или, хотя это может быть. Простой способ описать, что нужно сделать, - это, вероятно, список имен, однако они не упорядочены и просто помещены в лист. Мне нужно проверить, что фамилия совпадает с именем. Vibralux
Порядок в обоих файлах одинаковый? Решение значительно отличается в зависимости от того, делает это или нет. Jon Hanna

Ваш Ответ

3   ответа
3

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

using (StreamReader f1 = new StreamReader(path1))
using (StreamReader f2 = new StreamReader(path2)) {

    var differences = new List<string>();

    int lineNumber = 0;

    while (!f1.EndOfStream) {
        if (f2.EndOfStream) {
           differences.Add("Differing number of lines - f2 has less.");
           break;
        }

        lineNumber++;
        var line1 = f1.ReadLine();
        var line2 = f2.ReadLine();

        if (line1 != line2) {
           differences.Add(string.Format("Line {0} differs. File 1: {1}, File 2: {2}", lineNumber, line1, line2);
        }
    }

    if (!f2.EndOfStream) {
         differences.Add("Differing number of lines - f1 has less.");
    }
}
Спасибо, но только добавили немного больше деталей, поэтому это не сработает. Спасибо, в любом случае! Vibralux
0

Я экспортировал детали в CSV и заказал их численно, когда они были экспортированы для простоты использования. После того, как они были экспортированы в виде двух файлов CSV, я использовал программу под названиемBeyond Compare который можно найтиВот, Это позволяет сравнивать файлы.

Сначала я использовал Beyond Compare вручную, чтобы проверить правильность экспортируемого файла и т. Д., Однако Beyond Compare обладает способностью использовать командные строки для сравнения. Это приводит к тому, что все делается программно, все, что нужно сделать, - это просмотреть результаты вBeyond Compare, Возможно, вы сможете экспортировать их в другой CSV, я не выглядел как графический интерфейсBeyond Compare это очень приятно и полезно, так что это проще в использовании.

1

В зависимости от ваших ответов на комментарии к вашему вопросу, если это не нужно делать с помощью кода, вы можете сделать хуже, чем скачать инструмент сравнения, который, вероятно, более сложный.

(Winmerge например)

Похожие вопросы