This is the function you need if you are running into the infamous "must be superuser to COPY to or from a file" error from postgres.
(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)
pg_put_line — Envia uma string terminada em NULL para o backend PostgreSQL
$connection
= ?, string $data
): bool
pg_put_line() envia uma string terminada em NULL para
o servidor backend PostgreSQL. Isso é útil, por exemplo, para a inserção
de dados em uma tabela em alta velocidade, iniciada através de uma
operação de cópia PostgreSQL. O caractere NULL final é adicionado
automaticamente. Retorna true
em caso de sucesso ou false
em caso de falha.
Nota:
A aplicação deve enviar os dois caracteres "\." explicitamente na última linha para indicar ao backend que ela terminou de enviar seus dados.
Exemplo #1 Inserção de dados na tabela em alta velocidade
<?php
$conn = pg_pconnect("nomebd=meubanco");
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\tola mundo\t4.5\n");
pg_put_line($conn, "4\ttchau mundo\t7.11\n");
pg_put_line($conn, "\\.\n");
pg_end_copy($conn);
?>
Veja também pg_end_copy().
This is the function you need if you are running into the infamous "must be superuser to COPY to or from a file" error from postgres.
When using this function, don't get bit by using 'literal\tanotherliteral\n' issue by using single quotes vs. double quotes. "literal\tanotherliteral\n" is not the same. Many of the functions are impacted on how double quotes treats escape characters different than single quotes. I forget it all the time.