Обсуждение: ...

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

...

От
Юрий EGO
Дата:
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:

От
Merlin Moncure
Дата:
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