Postgres is a transactionally oriented database. Every access, read, write, or mixed, is a transaction. Transactions take a lot of overhead to setup, but once setup, can run hundreds or thousands of sequel queries pretty quickly.
If you insert three rows like this:
insert into table values ('me');
insert into table values ('you');
insert into table values ('them');
Postgres will create a transaction for each of these inserts.
If you put a begin;end; pair around the above inserts, like so:
begin;
insert into...
insert into...
insert into...
end;
Then postgresql will perform all the inserts as one transaction. If one insert fails, they will all fail. This actually pretty nice, because you don't have to keep track of which parts of your data got inserted and which ones failed. it's all or nothing.
Try editing your import script to have the above mentioned begin;end; pairs and let us know how that runs.
As for db size, 11,000 rows is peanuts for postgresql. There are multi-gigabyte dbs running under it quite reliably.
And if there's gonna be a mixed read/write environment it's a good thing to learn to use transactions now to ensure your database stays cohesive.