Обсуждение: Adding many rows to a table.

Поиск
Список
Период
Сортировка

Adding many rows to a table.

От
"Stuart Grimshaw"
Дата:
I was recently doing some testing into which of two methods of searching a
large block of text was faster. One of the ways I came up with was to
identify keywords in an article and then have a table to cross reference
these keywords back to the article they appear in.

article|keyword
---------------
520    |cheese
520    |bread
521    |pickle
522    |spam

you get the picture.

I wrote a perl program to extract these keywords, with the idea of inserting
them into a database. The first way I tried was to have lots on "insert
into"'s in 1 string, then execute that string. Worked OK until the string
contained too many keywords and the query was too large (this was under
6.5.3)

The docs suggest using "copy to" for inserting lots of data. I created a
string :

COPY TO keywords FROM STDIN USING DELIMITERS ',';
520,cheese
520,bread
521,pickle
522,spam
\.

and then executed it, and got the following error

ERROR:  parser: parse error at or near "520"

So my question is, after all that, is that the right way to construct my
string (regardless of language, Perl C/C++ etc)

By the way, I've ditched this idea for now, and just use a common or garden
index on the feild I want to search for the keywords. I just want to be able
to actually do this, you never know when it might come in handy.

---------------------------------------Stuart Grimshaw         |Schoolsnet LTD          |   Specialwww.schoolsnet.com
  |   Projects                        |   Developerstuart@stubbynet.org.uk |
 
---------------------------------------




Re: Adding many rows to a table.

От
Tom Lane
Дата:
"Stuart Grimshaw" <stuart@stubbynet.org.uk> writes:
> The docs suggest using "copy to" for inserting lots of data. I created a
> string :

> COPY TO keywords FROM STDIN USING DELIMITERS ',';
> 520,cheese
> 520,bread
> 521,pickle
> 522,spam
> \.

> and then executed it, and got the following error

> ERROR:  parser: parse error at or near "520"

> So my question is, after all that, is that the right way to construct my
> string (regardless of language, Perl C/C++ etc)

That does work as a psql script.  In other client interfaces you might
need to submit the COPY data separately from the initial COPY command.
Hard to say more without knowing exactly what you tried with which
interface ...
        regards, tom lane