Меньше строк написано, чем ожидалось с SQLite - PullRequest
0 голосов
/ 23 июня 2011

Когда я выполняю операцию вставки для более чем 1 00 215 строк, тогда она записывает только 1 100 105 строк.

Есть ли проблема с буфером или кеш-памятью? Если это проблема, то как увеличить размер памяти?

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

import com.csvreader.CsvReader;

public class CSVStoreData 
{
    Connection con=null;
    ResultSet rs=null;
    Statement smt = null;

    public void insertData(String path) 
    {
        try
        {
            Class.forName("SQLite.JDBCDriver");
            con = DriverManager.getConnection("jdbc:sqlite:/D:\\DB\\Mediation.db");
            con.setAutoCommit(false);
            smt = con.createStatement();
            CsvReader filereader = new CsvReader(path,',');
            filereader.readHeaders();
            long startTime = System.currentTimeMillis();
            while(filereader.readRecord())
            { 
                String query="insert into CDRData values('"+filereader.get(0)+"','"+filereader.get(1)+"','"+filereader.get(2)+"','"+filereader.get(3)+"','"+filereader.get(4)+"','"+filereader.get(5)+"','"+filereader.get(6)+"','"+filereader.get(7)+"','"+filereader.get(8)+"','"+filereader.get(9)+"','"+filereader.get(10)+"','"+filereader.get(11)+"','"+filereader.get(12)+"','"+filereader.get(13)+"','"+filereader.get(14)+"','"+filereader.get(15)+"','"+filereader.get(16)+"','"+filereader.get(17)+"','"+filereader.get(18)+"','"+filereader.get(19)+"','"+filereader.get(20)+"','"+filereader.get(21)+"','"+filereader.get(22)+"')";
                //System.out.println(filereader.get(0)+","+filereader.get(1)+","+filereader.get(2)+","+filereader.get(3)+","+filereader.get(4)+","+filereader.get(5)+","+filereader.get(6)+","+filereader.get(7)+","+filereader.get(8)+","+filereader.get(9)+","+filereader.get(10)+","+filereader.get(11)+","+filereader.get(12)+","+filereader.get(13)+","+filereader.get(14)+","+filereader.get(15)+","+filereader.get(16)+","+filereader.get(17)+","+filereader.get(18)+","+filereader.get(19)+","+filereader.get(20)+","+filereader.get(21)+","+filereader.get(22));
                smt.executeUpdate(query);
                // System.out.println("\n");
            }
            System.out.println("Record Inserted");
            long finishTime = System.currentTimeMillis();
            System.out.println("The time taken by insert query : "+(finishTime-startTime)+ " ms");
            con.commit();
        }
        catch(Exception e)
        {
            System.out.println("Error ---- "+e);
        }
    }

    /**
     * @param args
     */
    public static void main(String[] args) {
        CSVStoreData csvdata = new CSVStoreData();
        csvdata.insertData("D:\\CDRfile\\110527_160001.cdr");
    }
}

1 Ответ

1 голос
/ 30 июня 2011

Возможно, вы превышаете максимальный размер для базы данных SQLite. Проверьте http://www.sqlite.org/limits.html (в частности, последние два абзаца). Хотя вы, конечно, не превышаете максимальное количество строк в таблице, в зависимости от того, какое максимальное число страниц и размер страницы установлены, вы можете превысить максимальный размер базы данных.

http://www.sqlite.org/pragma.html#pragma_max_page_count и http://www.sqlite.org/pragma.html#pragma_page_size также могут быть полезны для просмотра.

Не возражаете, проверяя эти значения и сообщая нам, что вы получаете?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...