读取文本文件并将输出插入mysql表

时间:2016-03-02 06:44:01

标签: java mysql

我想读取txt文件内容并将其插入到我的sql表中。

我是通过编码完成的,但它显示出一些错误。也通过查询尝试,但它在表中显示为null。

查询 -

INSERT INTO patent_uspto_tmp (pinv) VALUES (LOAD_FILE('/home/gaurav/Documents/pinv.txt'));

代码 -

    try{
        String arr[]=null;
    String outputFile = "/home/gaurav/Documents/pinv.txt";

    FileReader fileReader = new FileReader(outputFile);
    BufferedReader bufferedReader = new BufferedReader(fileReader);
    String inputLine;
    List<String> lineList = new ArrayList<String>();
    while ((inputLine = bufferedReader.readLine()) != null) {
        lineList.add(inputLine);
    }
    fileReader.close();

    Class.forName("com.mysql.jdbc.Driver");  

    Connection con=DriverManager.getConnection(  
    "jdbc:mysql://localhost:3306/patent","root","india2000");  
    for (int i = 1;i<outputFile.length();i++)
    {
        arr[i]=outputFile.valueOf(i);

         PreparedStatement ps = (PreparedStatement) con.prepareStatement("insert into patent_uspto_tmp (pinv) values(?)");
            ps.setString(1,arr[i]); //  set the param here with the some value
            ps.executeUpdate();
            con.commit();
            con.close(); 
    }
    }
    catch(Exception e)
    {
        throw new RuntimeException(e);//System.out.println(e);

    }  
}
    }  

        error - null pointer exception

3 个答案:

答案 0 :(得分:1)

尝试使用PreparedStatementexecuteUpdate()以及最后的commit()方法:

    PreparedStatement ps = con.prepareStatement("insert into patent_uspto_tmp (pinv) values(?)");
    ps.setString(1, "value");//  set the param here with the some value
    ps.executeUpdate();
    con.commit();

答案 1 :(得分:0)

为什么使用ResultSet进行插入查询。 ResultSet从db获取数据。您必须使用statement.executeUpdate(sql)

Statement stmt=con.createStatement(); 
System.out.println("Inserting records into the table...");
stmt = conn.createStatement();
String sql = "INSERT INTO table" +
                   "VALUES (100, 'Zara', 'Ali', 18)";
stmt.executeUpdate(sql);

用于读取文件然后插入db。您可以逐行读取文件并存储到String arr[]中,然后将插入查询中的值传递为arr[i];

答案 2 :(得分:0)

您正在将动态参数传递给Statement,而不是为该动态参数设置任何值。请改用预处理语句,并将动态值作为参数传递给查询。