2015-06-24 4 views
0

Каждый CSV-файл может содержать более 1000 общих полей, Мы не можем использовать индексирование, так как поля могут быть не в одном порядке, Поле может не иметь значений в одном файле, но может иметь значения в другом файле.Как мы можем объединить несколько файлов csv?

ответ

0

Вы не указали, к какому типу приложений вы работаете ... но я бы сделал это в .NET и использовал объект Dictionary. Ключом к объекту словаря будет имя поля (это решает проблему не в том же порядке), а значение для каждого словарного элемента будет списком строк (CSV действительно происходит как строка).

Затем вы можете перечислить словарь и объединить все строки в ключ в любой желаемый формат.

Это не полностью протестирована ... но должны получить вы собираетесь:

private void ReadCSVFiles (string[] filenames) 
    { 
     Dictionary<string, List<string>> data = new Dictionary<string, List<string>>(); 
     foreach (string filename in filenames) 
     { 
      string[] content = System.IO.File.ReadAllLines(filename); 

      string[] fieldNames = content[0].Split(','); 
      for (int i = 1; i < content.Length; i++) 
      { 
       string[] tokens = content[i].Split(','); 
       for (int j = 0; j < fieldNames.Length; j++) 
       { 
        List<string> values = null; 
        if (!data.TryGetValue(fieldNames[j], out values)) 
        { 
         values = new List<string>(); 
         data.Add(fieldNames[j], values); 
        } 
        values.Add(tokens[j]); 
       } 
      } 
     } 
    } 
+0

Я ищу решение, которое возможно в Unix, может использовать AWK или питона –

+0

Удачи ... Я не может вам помочь –

Смежные вопросы