2015-06-24 14 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或Python –

+0

好運氣......我不能幫助你 –