Обсуждение: 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); }