here is cleaned/finished previous implementation of RAW_TEXT/RAW_BINARY formats for COPY statements.
The RAW with text formats means unescaped data, but with correct encoding - input/output is realised with input/output function. RAW binary means content produced/received by sending/received functions.
\copy avatars(picture) from ~/images/foo.jpg (format raw_binary);
select lastval();
create table doc(id serial, txt text);
\copy doc(txt) from ~/files/aaa.txt (format raw_text, encoding 'latin2');
select lastval();
Regards
Pavel
I am sending fresh version of COPY RAW patch.
There is new regress client test requested by Tom.
Note: I though about another solution based on binary parameters and binary result support in psql. Somelike:
INSERT INTO foo(a) VALUES($1)
\gpush filename
SELECT a FROM foo
\gpop filename
but, it is less intuitive, and doesn't work with stdin/stdout - so it is significant week against COPY based solution for scripting from shell. More \g***** solution is still possible if will be requested in future.