Java文件解析到数据库中

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

我必须解析包含3451部电影数据的movies.txt文件。我必须读取movies.txt文件并将所有电影数据存储到MySQL数据库表movies中。对于每部电影,数据收集在movies.txt文件的11列下。。
因此,我如何在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:对于输入字符串:“喜剧、犯罪、戏剧”,所以有些由
分隔,有些由
分隔