There was a small error in my previous post.
The 'begin transaction;' line was missed when
I copied the text out of the script and editted
it to remove the code around the text.
On Sat, 24 Jun 2006 20:10:58 -0700 (PDT), onemind wrote:
>I am using the sqlite gui and click import table from csv. I select a txt
>file that contain over 200,000 words in a list. Sqlite works fine with a
>smaller list of 200-300 words but when i import my big list, it hangs for
>ages or completely crashes my computer.
>Does anyone know how i can import this list into a table successfully?
The following text file, "word.txt", was created by a small script:
create table wordlist (word text);
begin transaction;
select current_time;
insert into wordlist values ("test0");
insert into wordlist values ("test1");
...
insert into wordlist values ("test199998");
insert into wordlist values ("test199999");
commit transaction;
select current_time;
select count(*) from wordlist;
This text file was executed within the sqlite3 command line utility
by typing the command:
.read word.txt
The resulting screen output was
11:20:40
11:20:48
200000
indicating the insertion of 200,000 words into a simple database
required 8 seconds of clock time on a 1.5 ghz AMD Sempron cpu
running MS-Windows XP.
The use of sequential numbers as the trailing part of the 'word'
results in a continual rebalancing of the b-tree with each insertion.
For performances reasons, this is probably the worst kind of data
to insert into a database. Random words inserted result in many
leaves that are partially filled and fewer rebalance acts.
Eight seconds to insert the lot is pretty good.
You could create a similar text file from the CSV file using your
editor.
Chris