Try wrapping all the inserts in a transaction:

BEGIN;
INSERT ...
INSERT ...
....
COMMIT;

This should be MUCH faster.

-Steve W


mrobi...@cs.fiu.edu wrote:
> Hi,
> 
> I am new with sqlite, and I create a program that reads several mllion
> records and puts them into a sqlite db using.
> 
> The table has one column ONLY indexed and unique, but it takes many hours.
> 
> Is it necessary to pre-allocate the space, or is the anything that I can
> do to reduce the time it takes.
> 
> this is how I create the db, table and index.
> 
> void openSqliteFile()
> {
>     rc = sqlite3_open(genome_probesDB, &db); //if it !exist creates it
> 
>     if (rc == SQLITE_OK) {
>        printf("RC=%d database=%s was opened\n", rc, genome_probesDB );
>     }
>     else {
>        printf("RC=%d database=%s COULD NOT OPEN\n", rc, genome_probesDB );
>     }
> 
>     rc = sqlite3_exec(db, "CREATE TABLE probes (probe STRING unique);", 
> NULL, NULL, &errmsg);
>     if (rc == SQLITE_OK) {
>        printf("RC=%d table probes with field probe was created\n", rc );
>     }
>     else {
>        printf("RC=%d table %s already exists, so it was NOT created\n",
> rc, genome_probesDB );
>     }
> 
>     rc = sqlite3_exec(db, "CREATE INDEX probe on probes (probe);",  NULL,
> NULL, &errmsg);
>     if (rc == SQLITE_OK) {
>        printf("RC=%d INDEX probe on table probes for field probe was
> created\n", rc );
>     }
>     else {
>     printf("RC=%d INDEX probe on table %s already exists, so it was NOT
> created\n", rc, genome_probesDB );
>     }
> 
> 
> }//end void openSqliteFile()
> 
> 
> and this is how I add the data:
>     char *zSQL = sqlite3_mprintf("INSERT INTO probes VALUES(%Q)", probe);
> 
>     sqlite3_exec(db, zSQL, 0, 0, 0);
>     sqlite3_free(zSQL);
> 
> 
> 
> Thanks very much
> 
> Michael
> 
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to