Обсуждение: Getting "copy from" to work from a C++ program
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
--
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);
}