我正在尝试从大型数据文件中读取movie.dat,然后使用该数据的某些列填充数据库表。
电影文件中的数据具有以下数据字段/列:
ID标题imdbID spanishTitle imdbPictureURL年RTID rtAllCriticsRating rtAllCriticsNumReviews rtAllCriticsNumFresh rtAllCriticsNumRotten rtAllCriticsScore rtTopCriticsRating rtTopCriticsNumReviews rtTopCriticsNumFresh rtTopCriticsNumRotten rtTopCriticsScore rtAudienceRating rtAudienceNumRatings rtAudienceScore rtPictureURL
数据值由制表符分隔。
String line;
// open movies file
BufferedReader reader = new BufferedReader(new FileReader("C:\\Users\\Michael\\IdeaProjects\\hw3\\data\\movies.dat"));
System.out.println("Movies.dat successfully opened.");
// read the first line (header) of file
line = reader.readLine();
// create PreparedStatement for inserting movie data into db
try {
PreparedStatement s = conn.prepareStatement(
"INSERT INTO Movie(mID, movieTitle, releaseYear, "
+ "allCriticsRating, allCriticsNumReviews, "
+ "topCriticsRating, topCriticsNumReviews, "
+ "audienceRating, audienceNumRatings) "
+ "VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)");
// read remaining lines of data in the file
while ((line = reader.readLine()) != null) {
// separate each data field value and store into tmp array
String[] tmp = line.split("\\t");
s.setInt(1, Integer.parseInt(tmp[0]));
s.setString(2, tmp[1]);
s.setInt(3, Integer.parseInt(tmp[5]));
s.setFloat(4, Float.parseFloat(tmp[7]));
s.setInt(5, Integer.parseInt(tmp[8]));
s.setFloat(6, Float.parseFloat(tmp[12]));
s.setInt(7, Integer.parseInt(tmp[13]));
s.setFloat(8, Float.parseFloat(tmp[17]));
s.setInt(9, Integer.parseInt(tmp[18]));
s.addBatch();
}
s.executeBatch();
s.close();
System.out.println("Movie table successfully populated!");
}
catch(SQLException e) {
System.out.println("Movie table population failed.");
e.printStackTrace();
}
但是,当我运行此代码时,我在第一个parseFloat上获得了输入字符串“ \ N”的numberformatexception。我不知道“ \ n”可能来自哪里。我使用了相同的代码(针对某些不同的数据字段进行了调整),用来自另一个文件的数据填充其他表,并且工作正常,因此我不确定为什么只是这个文件给我带来了问题。
预先感谢您的帮助!
答案 0 :(得分:0)
您可以更新此行:
String [] tmp = line.split(“ \ t”);
看起来像这样
String [] tmp = line.strip()。split(“ \ t”);
,以及标记之前和之后的多余空白将被删除(包括换行符)