inserting many rows

Started by SunWuKungover 20 years ago3 messagesgeneral
Jump to latest
#1SunWuKung
Balazs.Klein@axelero.hu

I will need to insert multiple rows into a table from php.
The data will come in 'packages' of 50-500 rows (they are responses from
different questionnaires). As there will be many people sending their
results in at the same time I need an effective method for this.

What do you suggest is the most effective way to insert this type of
data into the db? Issuing multiple inserts from php seems to be a waste
of resources.

I was thinking of writing the responses into a pg array field with a
single insert and than explode the content of that field into rows with
a function.

Could you suggest an efficient aproach?
Thanks for the help.

Balazs

#2Sean Davis
sdavis2@mail.nih.gov
In reply to: SunWuKung (#1)
Re: inserting many rows

On 1/2/06 5:34 PM, "SunWuKung" <Balazs.Klein@axelero.hu> wrote:

I will need to insert multiple rows into a table from php.
The data will come in 'packages' of 50-500 rows (they are responses from
different questionnaires). As there will be many people sending their
results in at the same time I need an effective method for this.

What do you suggest is the most effective way to insert this type of
data into the db? Issuing multiple inserts from php seems to be a waste
of resources.

I was thinking of writing the responses into a pg array field with a
single insert and than explode the content of that field into rows with
a function.

Could you suggest an efficient aproach?

You could look at using COPY to insert many records very quickly. However,
inserting inside a transaction may be all that you need. Have you tried
simulating your application under expected loads so that you are sure that
you are making the right choice?

Sean

#3John DeSoi
desoi@pgedit.com
In reply to: SunWuKung (#1)
Re: inserting many rows

On Jan 2, 2006, at 5:34 PM, SunWuKung wrote:

What do you suggest is the most effective way to insert this type of
data into the db? Issuing multiple inserts from php seems to be a
waste
of resources.

I was thinking of writing the responses into a pg array field with a
single insert and than explode the content of that field into rows
with
a function.

This may help. But other than using some form of COPY, you'll
probably get the best performance increase using prepared statements.
Unfortunately, I think this is only available in PHP 5.1 and later.

John DeSoi, Ph.D.
http://pgedit.com/
Power Tools for PostgreSQL