0

今回は私の答えが届くことを願っています

以下のコードを書きましたが、どこが間違っているのかわかりません。正しいようです

このコードは 100 万件以上のレコードを oracle xe に挿入する必要があります。PreparedStatement を 1 つずつ実行するときに単一の挿入ステートメントで記述しましたが、実行に 6 時間かかりました !!!!! thread.sleep() の使用を余儀なくされたため

    package tokenizing;
import java.sql.*;
import java.util.StringTokenizer;

public class TokenExtraction2 {


    public static void main(String[] args) throws Exception {
        String myText[]=new String[2276];
        Jdbc db=new Jdbc();
        String st1=null;
        int i=0;
        int j=0;
        String tokens[][]=new String [3000000][2];
        st1="select ntext from NEWSTEXT ";
        ResultSet result=db.select(st1);
        while(result.next())
        {
            myText[i]=result.getString("ntext");
            ++i;
        }
        db.closedb();
        i=0;
        StringBuilder st= new StringBuilder("insert into tokens5(token,tokenlength) values");
        while(i<2276)
        {

            StringTokenizer s=new StringTokenizer(myText[i]," 0123456789*./»«،~!@#$%^&()_-\"+=:;|<>?“؟”’{}[]‘,\\\t\n\r\fabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ...—`—ـ؛–…_");
            while(s.hasMoreTokens()){
                String key=s.nextToken();
                tokens[j][0]=key;
                tokens[j][1]=(key.length())+"";
                st.append("(?,?)");
                if( i<2276 && s.hasMoreTokens())
                st.append(", ");
                else
                st.append(";");
                //db.insert(st, key, key.length());
                //db.closedb();
                System.out.println(key+"\t");



                   j++;
            }
            System.out.println("num of news is: "+i);
            System.out.println("*****************************************************************************************");
            System.out.println("num of tokens is: "+j);
            System.out.println("next news"+"\t");
            //j=0;

            i++;
        }

        System.out.println(st);
        int k=0;

         Class.forName("oracle.jdbc.driver.OracleDriver") ;
        Connection  con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","ALBALOO","myjava123");
        PreparedStatement ps=con.prepareStatement(st.toString());
    //  con.setAutoCommit(false);
        //j=1;
        i=0;
        //j=j-286;
        while(k<j)
        {

            i=i+1;

                ps.setString(i, tokens[k][0]);

            System.out.println(i);
                i=i+1;
                ps.setInt(i,Integer.parseInt(tokens[k][1]));

                System.out.println(k+2);

                k++;


        }

        ps.executeUpdate();
    //con.commit();
}









}
4

2 に答える 2