12月11日

今天继续写数据处理,我继续去解决数据太多难入库的问题,我最后将写入函数改成这样

 //这个是改变了插入逻辑 插的快一些
    public void add_1(String name ,ArrayList<ArrayList<String>> arrayLists,ArrayList<String>zd)
    {

        int j=0;
        //获得链接对象
        Connection connection = Util.getConnection();

        //准备sql语句,进行插入操作,插入到class表中
        String sql1 = "insert into "+name+" (";
        for(int i=0;i<zd.size();i++){
            if(i==zd.size()-1){
                sql1=sql1+zd.get(i)+" ";
            }else{
                sql1=sql1+zd.get(i)+",";
            }
        }
        sql1=sql1+") values(";
        // System.out.println(sql1);
        PreparedStatement preparedStatement = null;//定义在try外用于在finally中释放,因为在try中是局部变量
        try {

            for(ArrayList<String> array : arrayLists) {

                //String sql1=sql+") values(";
                String sql=sql1;
                for (int k = 0; k < array.size(); k++) {
                    if(k==array.size()-1){
                        sql=sql+"'"+array.get(k).replaceAll("'","")+"') ";
                        //会有一个很怪的问题,元素的值会有单引号,而这个单引号会导致和其他单引号组成一个元素,插入就乱掉了
                        //我选择将元素中单引号删掉
                    }else{
                        sql=sql+"'"+array.get(k).replaceAll("'","")+"',";
                    }

                }
                System.out.println(sql+"开始了");
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.executeUpdate();//执行sql




            }


            // System.out.println("1次");


        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally {
            //关闭资源

            Util.close(preparedStatement);
            Util.close(connection);
        }
    }

能插入的比较快,但是需要几秒时间

然后我就像怎么做数据的处理呢,缺失值该怎么展示呢,怎么调用python去查询缺失值呢,结果又怎么传给java呢,在思考建设。

 

 

学习时间:13:34到19:21

posted @ 2021-12-11 22:59  不咬牙  阅读(47)  评论(0)    收藏  举报