2014-02-08 31 views
1

有誰知道我將如何創建一個應用程序,將通過逗號分隔文件(CSV)並組織該信息,然後將其放入一個數據庫?舉例來說,我必須去通過類似如下的文件:如何解析通過CSV(逗號分隔的文件)並顯示輸出

Name of Athlete, Birthday, Salary($) 
John Morris, 9/25/1991, 5000000 
Mike Hawk, 2/2/1988, 1000000 
Dewayne Johnson, 11/22/1985, 4000000 

我將如何組織這些信息,並設置它?我正在努力讓它可以讓用戶輸入。例如:用戶輸入「a」作爲工資數額,並輸出所有制作這筆錢的玩家。

球員1名玩家1個生日玩家2名玩家2歲生日

任何幫助表示讚賞。我希望能夠幫助您閱讀信息並存儲/檢索信息。

不要給我完整的答案。我是一名學生,我想了解它。

+0

既然你想學習,你對自己的想法如何實現?想想什麼定義了一個CSV文件,以及什麼標準的Java庫類可以用來讀取文件? –

+0

你的第二行有兩個完整的條目,所以我將它編輯成兩行。如果這不是你的意圖(那麼你的問題有點不清楚),你可以恢復編輯。 –

+0

這是一個相當廣泛的問題,有點OT。我建議你對涉及試圖描述你所描述的__many__方面進行一些研究。我假設你正在使用java。從基礎開始:如何讀取輸入,如何讀取文件,如何讀取CSV(您可能需要一個庫),如何寫入/讀取/寫入數據庫等。然後編寫代碼,測試它然後返回到SO,並提供有關您的代碼的特定問題。祝你好運! –

回答

0

那麼讀取這種類型的文件的簡單方法是使用BufferedReader,它允許您逐行讀取文件。

然後使用split函數按分隔符分隔字符串並將其轉換爲數組。

使用生成的數組,您可以根據需要將數據插入到數據庫中進行正確的轉換。

+0

對於包含帶引號字符串值的csv文件,這是不可行的,因爲它們可能包含分隔符。 – thrau

+0

它可以使用引號作爲分隔符的一部分進行調整,如',' – vbazaga86

1

我會考慮下列步驟操作:

  • 創建一個類來映射在你的CSV數據。例如,具有屬性name,birthdaysalaryAthlete類(這取決於您定義每種數據類型)。
  • 閱讀CSV文件。您可以使用ScannerBufferedReader(使用FileReader)來完成此操作。
  • 對於每個行讀:
    • 拆分串入幾個字符串由逗號(,)
    • 創建一個新的Athlete對象和每串解析成一個屬性,將其設置到對象。
    • 將新的Athlete存儲在一個集合中(List或其他)。
  • 一旦你完成加載一些Athlete s,將它們保存到您的數據庫。
  • 重複此操作,直到讀完csv。
1

用逗號分割是處理CSV的一種天真的方式。除非你100%確定你在實際領域永遠不會有逗號,否則就走這條路線,但是如果你遇到像hello, my name is devshorts這樣的字符串,你應該使用CSV庫。 http://opencsv.sourceforge.net/似乎是一個不錯的選擇。

一旦完成,將每個條目映射到代表一行的類。製作一個Atheltes班,其中它的字段爲Name,BirthdateSalary

您可以使用直接JDBC連接到sqlite/mysql /任何數據庫並插入(使用原始SQL)這些值到名爲Atheletes的表中。如果你想使用ORM進行休眠,但這可能比你需要設置更多的工作。