CascadiaPHP 2024

pg_put_line

(PHP 4 >= 4.0.3, PHP 5, PHP 7, PHP 8)

pg_put_lineEnvia uma string terminada em NULL para o backend do PostgreSQL

Descrição

pg_put_line(PgSql\Connection $connection = ?, string $data): bool

pg_put_line() envia uma string terminada em NULL para o servidor backend do PostgreSQL. Isto é necessário em conjunto com o comando COPY FROM do PostgreSQL.

COPY é uma interface de carregamento de dados de alta velocidade suportada pelo PostgreSQL. Os dados são transmitidos sem serem analisados e em uma única transação.

Uma alternativa ao uso de comandos pg_put_line() brutos é usar pg_copy_from(). Esta é uma interface muito mais simples.

Nota:

A aplicação deve enviar explicitamente os dois caracteres "\." na última linha para indicar ao backend que terminou de enviar seus dados, antes de emitir pg_end_copy().

Aviso

O uso de pg_put_line() faz com que a maioria das operações de objetos grandes, incluindo pg_lo_read() e pg_lo_tell(), falhem posteriormente. Você pode usar pg_copy_from() e pg_copy_to() no lugar.

Parâmetros

connection

Uma instância de PgSql\Connection. Quando o parâmetro connection não for especificado, a conexão padrão será usada. A conexão padrão é a última conexão feita por pg_connect() ou pg_pconnect().

Aviso

A partir do PHP 8.1.0, usar a conexão padrão tornou-se defasado.

data

Uma linha de texto a ser enviada diretamente para o backend do PostgreSQL. Um terminador NULL é adicionado automaticamente.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Registro de Alterações

Versão Descrição
8.1.0 O parâmetro connection agora espera uma instância de PgSql\Connection; anteriormente, um resource era esperado.

Exemplos

Exemplo #1 Exemplo de pg_put_line()

<?php
$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);
?>

Veja Também

add a note

User Contributed Notes 2 notes

up
2
kurt at nospam dot milliganshome dot net
18 years ago
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.
up
0
smcbride at msn dot com
3 years ago
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.
To Top