Java文件解析到数据库中
我必须解析包含3451部电影数据的movies.txt文件。我必须读取movies.txt文件并将所有电影数据存储到MySQL数据库表movies中。对于每部电影,数据收集在movies.txt文件的11列下。。Java文件解析到数据库中,java,database,file,Java,Database,File,我必须解析包含3451部电影数据的movies.txt文件。我必须读取movies.txt文件并将所有电影数据存储到MySQL数据库表movies中。对于每部电影,数据收集在movies.txt文件的11列下。。 因此,我如何在java中实现这一点需要建议嘿,有上千种方法可以实现这一点。我认为最好的方法是创建一个类电影,加载文件并插入数据库 但这里有另一种方法 private void readFile() throws IOException, SQLException{ File f
因此,我如何在java中实现这一点需要建议嘿,有上千种方法可以实现这一点。我认为最好的方法是创建一个类电影,加载文件并插入数据库 但这里有另一种方法
private void readFile() throws IOException, SQLException{
File f = new File("C:/Movies.txt");
BufferedReader in = new BufferedReader(new FileReader(f));
Connection dbConnection = getConnection();
String line;
while((line = in.readLine()) != null){
String[] columns;
columns = line.split(";");
insertRecordIntoTable(dbConnection, columns);
}
in.close();
}
private void insertRecordIntoTable(Connection dbConnection,String[] columns) throws SQLException {
PreparedStatement preparedStatement = null;
String insertTableSQL = "INSERT INTO MOVIES"
+ "(MOVIE_ID, NAME, AUTHOR, DUNNO) VALUES"
+ "(?,?,?,?)";
try {
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setString(1, columns[0]);
preparedStatement.setString(2, columns[1]);
preparedStatement.setString(3, columns[2]);
preparedStatement.setString(4, columns[3]);
//and more inserts....
// execute insert SQL stetement
preparedStatement.executeUpdate();
System.out.println("Record is inserted into Movies table!");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
if (preparedStatement != null) {
preparedStatement.close();
}
}
}
readFile读取ur文件并每行调用insert方法。您还必须创建一个方法(getConnection)来创建URDB连接。
如果您有任何问题,请提问:)数组是基于零的索引,而每个sql索引都是基于1的。 因此,只需将其放入您的代码中:
try {
preparedStatement = dbConnection.prepareStatement(insertTableSQL);
preparedStatement.setString(1, columns[0]);
preparedStatement.setString(2, columns[1]);
preparedStatement.setString(3, columns[2]);
preparedStatement.setString(4, columns[3]);
preparedStatement.setString(5, columns[4]);
preparedStatement.setString(6, columns[5]);
preparedStatement.setString(7, columns[6].replaceAll(",", ""));
preparedStatement.setString(8, columns[7]);
preparedStatement.setString(9, columns[8]);
preparedStatement.setString(10, columns[9]);
preparedStatement.setString(11, columns[10]);
//and more inserts....
// execute insert SQL stetement
preparedStatement.executeUpdate();
System.out.println("Record is inserted into Movies table!");
}
我想这就是为什么你以前得到了Interger parse的解释。你能给我们看一下movies.txt文件的一些行吗?这些行是用逗号分隔的吗?你需要给我们更多的细节。。。这是文件11:14的一行;故事片;格雷格·马尔克斯;7.2;86;2003;喜剧、犯罪、戏剧;31782; ; ;; 在这种情况下,也可能有空白,它应该插入null或空VAUE。在上面的示例中,您提到手动插入每个列,但在我的示例中,超过3000个电影意味着超过3000行。手动插入这么多行是个坏主意。我希望你有我的问题。我有你的问题,但是3000排应该没有问题。但是您只需调用readFile方法一次。所以它不是真正的手工操作。你也可以建立自己的大插入语句。在执行之后。但是我想时差不会那么大。是的,这很好。但它们是一些具有多个逗号分隔值的列,因此如何在单个列中插入这些值。对于这种情况,我遇到了数字格式异常,例如:java.lang.NumberFormatException:对于输入字符串:“喜剧、犯罪、戏剧”,所以有些由
、
分隔,有些由分隔代码>?