2024 年 PHP Conference Japan

pg_put_line

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

pg_put_line傳送以 NULL 結尾的字串到 PostgreSQL 後端

描述

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

pg_put_line() 會將一個 NULL 結尾的字串傳送到 PostgreSQL 後端伺服器。這與 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
19 年前
如果您遇到 Postgres 出名的「必須是超級使用者才能複製到檔案或從檔案複製」錯誤,這就是您需要的函式。
0
smcbride at msn dot com
4 年前
使用此函式時,不要因為使用單引號與雙引號而被 'literal\tanotherliteral\n' 問題所困擾。"literal\tanotherliteral\n" 並不一樣。許多函式都會受到雙引號處理跳脫字元的方式與單引號不同的影響。我總是忘記這一點。
To Top