COPY FROM file
deve ser executado por uma conta de superusuário e essa restrição geralmente o torna inadequado para uso na web Trecho da documentação :
Mas o PHP fornece suporte para
COPY FROM stdin
que não tem essa restrição. Este exemplo da documentação do php mostra como é feito: $conn = pg_pconnect("dbname=foo");
pg_query($conn, "create table bar (a int4, b char(16), d float8)");
pg_query($conn, "copy bar from stdin");
pg_put_line($conn, "3\thello world\t4.5\n");
pg_put_line($conn, "4\tgoodbye world\t7.11\n");
pg_put_line($conn, "\\.\n");
pg_end_copy($conn);
No caso de um arquivo, você precisará abrir o arquivo com funções php e alimentá-lo linha por linha para a conexão postgres com
pg_put_line()