Обсуждение: Getting "copy from" to work from a C++ program

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

Getting "copy from" to work from a C++ program

От
Carlos Moreno
Дата:
Hi,

I'm trying to insert several records into a table in one shot
(from a C++ program, that is).

All my attempts to use "copy from" have failed  (well, I
haven't tried copying from an actual file, since I have
the data in memory, and I'd like to avoid the overhead
to write it to a file first).  Is it possible??  I've
tried things like:

PgDatabase db(" ..... ");
db.Exec ("copy deleteme from stdin\n1\tName1\n2\tName2");

And similar things  (with a ; after stdin, with a \n. or
\n\\. at the end of the string -- they all fail with an
ErrorMessage() indicating a syntax error in the statement.

Help?!!  :-(

Will it be necessary that I dump the data into a temporary
file and then do copy deleteme from tmpfile.txt ??

Thanks,

Carlos
--




Re: Getting "copy from" to work from a C++ program

От
Mihnea Balta
Дата:
On Thursday 04 April 2002 07:08, you wrote:
> Hi,
>
> I'm trying to insert several records into a table in one shot
> (from a C++ program, that is).
>
> All my attempts to use "copy from" have failed  (well, I
> haven't tried copying from an actual file, since I have
> the data in memory, and I'd like to avoid the overhead
> to write it to a file first).  Is it possible??  I've
> tried things like:
>
> PgDatabase db(" ..... ");
> db.Exec ("copy deleteme from stdin\n1\tName1\n2\tName2");

I use this (libpq, not libpq++, but you'll get it):

void dbcon::copy(char* table, char* buf){       char copy_qry[256];
       snprintf(copy_qry, 256, "copy %s from stdin", table);       PQexec(conn, copy_qry);       PQputline(conn, buf);
    PQputline(conn, "\\.\n");       PQendcopy(conn);
 
}