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() 之前最后一行发送两个字符“\.”来向后端表明发送数据结束。

警告

Use of the pg_put_line() causes most large object operations, including pg_lo_read() and pg_lo_tell(), to subsequently fail. You can use pg_copy_from() and pg_copy_to() instead.

参数

connection

An PgSql\Connection instance. When connection is unspecified, the default connection is used. The default connection is the last connection made by pg_connect() or pg_pconnect().

警告

As of PHP 8.1.0, using the default connection is deprecated.

data

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

返回值

成功时返回 true, 或者在失败时返回 false

更新日志

版本 说明
8.1.0 现在 connection 参数接受 PgSql\Connection 实例,之前接受 resource

示例

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

参见

add a note add a note

User Contributed Notes 2 notes

up
2
kurt at nospam dot milliganshome dot net
19 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
4 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