2016-03-07 62 views
0

進出口使用下面的代碼來讀取一個CSV文件和地圖CSV文件,並把結果希望把結果在地圖閱讀使用Grails/Groovy的

def fileName = 'C:/temp/exampleCSV.csv' 
     def reader = new CSVReader(new FileReader(new File(fileName))) 
     def header = reader.readNext() 
     def rows = reader.readAll().collect { row -> 
      (0..(row.size()-1)).collectEntries { [header[it], row[it]] } 
     } 

CSV:

name;cuInfo;service;startDate;appId 
Apple;T12;3;14-02-16 10:00;G12351 
Apple;T13;3;14-01-16 13:00;G12352 
Google;T14;9;10-01-16 11:20;G12301 
Microsoft;T15;10;26-02-16 10:20;G12999 

但上面的代碼給我的輸出:

[ 
     [name;cuInfo;service;startDate;appId:Apple;T12;3;14-02-16 10:00;G12351], 
     [name;cuInfo;service;startDate;appId:Apple;T13;3;14-01-16 13:00;G12352], 
     [name;cuInfo;service;startDate;appId:Google;T14;9;10-01-16 11:20;G12301], 
     [name;cuInfo;service;startDate;appId:Microsoft;T15;10;26-02-16 10:20;G12999] 
    ] 

我想獲得這個結構如下圖地圖?

[ 
     [name:"Apple", cuInfo:"T12",service:"3",startDate:"14-01-16 13:22",appId:"G12355"], 
     [name:"Apple",cuInfo:"T13",service:"3",startDate:"12-02-16 13:00",appId:"G12356"], 
     [name:"Google",cuInfo:"T14",service:"9",startDate:"10-01-16 11:20",appId:"G12300"], 
     [name:"Microsoft",cuInfo:"T15",service:"10",startDate:"26-02-16 10:20",appId:"G12999"] 
    ] 
+0

這裏有什麼問題了嗎? – droggo

+0

@droggo,我會發現數據來自數據庫和和csv之間的差異,並創建新的CSV與差異 – user3122166

+0

所以比較它,並打印到文件。在這個問題中,我沒有看到任何具體的問題需要解決 – droggo

回答

2

您可以通過CSV文件中的數據爲相同的結構(地圖列表)作爲查詢的輸出,你可以這樣做:

def reader = new CSVReader(new FileReader(new File(fileName))) 
def output = reader.collect { it[0].split(';') }.with { rows -> 
    def header = rows.head() 
    def dataRows = rows.tail() 

    dataRows.collect { row -> 
     [header, row].transpose().collectEntries() 
    } 
} 

的CSV行拆分成多列,標題和其餘行被收集起來,然後它們被轉換。

transpose()會爲每個數據行這樣的結構:

[[name, Apple], [cuInfo, T12], [service, 3], [startDate, 14-02-16 10:00], [appId, G12351]] 

而且collectEntries()變成它變成Map

[name:Apple, cuInfo:T12, service:3, startDate:14-02-16 10:00, appId:G12351] 
+0

@Rosa,Great works !!!,謝謝,我的其他問題我怎麼能比較這個地圖,並找到Grails中的差異,請參閱我上面的示例 – user3122166

+1

偉大的問題!但在StackOverflow上,您一次只能提出一個問題。此外,這不是一個真正的** Grails **問題。因此,請繼續並使用來自數據庫和CSV文件的兩個相同結構的示例「Map」詢問新的Groovy **問題。 –

+0

@Rosa你是對的,我會這樣做,並接受你的回答 – user3122166