pg_put_line

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

pg_put_line向 PostgreSQL 后端发送以 NULL 结尾的字符串

说明

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

pg_put_line() 向 PostgreSQL 后端服务器发送以 NULL 结尾的字符串。这需要与 PostgreSQL 的 COPY FROM 命令结合使用。

COPY 是 PostgreSQL 支持的一种高速数据加载接口。数据在不进行解析的情况下以单一事务的方式传递。

使用原始 pg_put_line() 命令的另一种方法是使用 pg_copy_from()。这是一个更简单的接口。

注意:

应用程序必须在最后一行明确发送两个字符 "\.",以指示后端已完成发送数据,然后再发出 pg_end_copy()

警告

使用 pg_put_line() 会导致大多数大对象操作(包括 pg_lo_read()pg_lo_tell())随后失败。你可以改用 pg_copy_from()pg_copy_to()

参数

connection

一个 PgSql\Connection 实例。当 connection 未指定时,将使用默认连接。默认连接是 pg_connect()pg_pconnect() 最后建立的连接。

警告

从 PHP 8.1.0 开始,使用默认连接已弃用。

data

要直接发送到 PostgreSQL 后端的文本行。将自动添加一个 NULL 终止符。

返回值

成功时返回 true,失败时返回 false

变更日志

版本 说明
8.1.0 connection 参数现在需要一个 PgSql\Connection 实例;以前需要一个 资源

范例

示例 #1 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);
?>

参见

添加备注

用户贡献的备注 2 个备注

2
kurt at nospam dot milliganshome dot net
18 年前
如果遇到 postgres 中臭名昭著的 "must be superuser to COPY to or from a file" 错误,则需要此函数。
0
smcbride at msn dot com
4 年前
使用此函数时,不要被使用单引号与双引号引起的 'literal\tanotherliteral\n' 问题所困扰。 "literal\tanotherliteral\n" 并不相同。许多函数在双引号如何处理转义字符方面与单引号不同。我一直都会忘记。
To Top