Java txt到sqlite数据库的数据传输怎么能更快

时间:2016-09-28 16:36:00

标签: optimization

我编写了一个关于将txt文件传输到sqlite数据库的java程序,但是需要花费更多时间才能获得大约83000个数据(200个数据大约需要1分钟)。 我怎样才能提高转移速度。 İ尝试添加arraylist而不是获取但不改变

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.Statement;

public class NewMain {

public static Connection connect() {
    Connection conn = null;
    try {
        String url1 = "jdbc:sqlite:c:/Users/sozdemir/Desktop/sozluk.db";
        conn = DriverManager.getConnection(url1);
        String sql1 = "CREATE TABLE IF NOT EXISTS KELIMELER (Kelime PRIMARYKEY NOT NULL);"; 
        Statement s  = conn.createStatement();
        s.execute(sql1);
    } catch (Exception e) {
        System.out.println(e.getMessage());

    }
    return conn;
    }

public void Verigir(String kelime){
String sql = "INSERT INTO KELIMELER (kelime) VALUES(?)";
    try (Connection conn = this.connect();
            PreparedStatement statement = conn.prepareStatement(sql)
            ){
        statement.setString(1, kelime);
        statement.executeUpdate();

    } catch (Exception e) {
    }


}

public static void main(String[] args) throws IOException {
/*    connect();*/

    NewMain app = new NewMain();    
    String kelime = null;
    BufferedReader in = null;
    int adet;
    adet= 0;
    in = new BufferedReader(new FileReader("C://Users//sozdemir//Desktop//ozluk.txt"));
    while ((kelime=in.readLine()) !=null) {
        app.Verigir(kelime);
    adet +=1;
        System.out.println(81742 - adet);
    }    
}    

}

1 个答案:

答案 0 :(得分:0)

一些提示:

  1. 使用单个prepareStatement
  2. 将所有内容放入交易中
  3. 使用PRAGMA synchronous = OFF和PRAGMA journal_mode = OFF
  4. 这将为您提供非常快速的插入。