Thread: ...

...

From
Юрий EGO
Date:
Hello!

I have a code (libpq):

char textbuffer[120];
res = PQexec(conn, "COPY table_name(\"serial_column",\"int_column",\"bytea_column\") FROM STDIN");
if(PQresultStatus(res) == PGRES_COPY_IN)
{
for(int n=0; n < 10; n++) {
sprintf(textbuffer, "1\t%i\t'text'\n", n);
int copydatares = PQputCopyData(conn, textbuffer, strlen(textbuffer));
}
PQputCopyEnd(conn, NULL);
} 

For text data it's ok, but binary data may have '\n' or '\t' characters.
How  correctly write int STDIN binary data?

Help me please! 
Thanks in advance.

Re:

From
Merlin Moncure
Date:
On Tue, Jun 7, 2011 at 7:46 AM, Юрий EGO <mail_ego@list.ru> wrote:
> Hello!
>
> I have a code (libpq):
>
> char textbuffer[120];
> res = PQexec(conn, "COPY
> table_name(\"serial_column",\"int_column",\"bytea_column\") FROM STDIN");
> if(PQresultStatus(res) == PGRES_COPY_IN)
> {
> for(int n=0; n < 10; n++) {
> sprintf(textbuffer, "1\t%i\t'text'\n", n);
> int copydatares = PQputCopyData(conn, textbuffer, strlen(textbuffer));
> }
> PQputCopyEnd(conn, NULL);
> }
>
> For text data it's ok, but binary data may have '\n' or '\t' characters.
> How  correctly write int STDIN binary data?

the binary format doesn't use delimiters like that.  you have to
basically study the format if you want to craft data that wasn't
produced by the server :(.

merlin