2014-02-08 24 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进行休眠,但这可能比你需要设置更多的工作。