PostgreSql 大对象通过 PHP PDO 归档
PostgreSql Large Object to file through PHP PDO
此代码将 LO 输出到浏览器:
...
$my_pdo_connect->beginTransaction();
$stream = $my_pdo_connect->pgsqlLOBOpen($oid, 'r');
fpassthru($stream);
...
但我坚持将 LO 写入文件系统。
我知道 pg_lo_export 和 lo_export,但是
限制仅使用 PHP PDO 功能。
显然我应该使用一些 php-function 而不是 fpassthru($stream) 将流写入文件,找不到合适的文档或示例。
终于找到了解决问题的方法:
$my_pdo_connect->beginTransaction();
$stream = $my_pdo_connect->pgsqlLOBOpen($oid, 'r');
$file = fopen('my_file', 'w');
stream_copy_to_stream($stream, $file);
fclose($file);
此代码将 LO 输出到浏览器:
...
$my_pdo_connect->beginTransaction();
$stream = $my_pdo_connect->pgsqlLOBOpen($oid, 'r');
fpassthru($stream);
...
但我坚持将 LO 写入文件系统。
我知道 pg_lo_export 和 lo_export,但是
限制仅使用 PHP PDO 功能。
显然我应该使用一些 php-function 而不是 fpassthru($stream) 将流写入文件,找不到合适的文档或示例。
终于找到了解决问题的方法:
$my_pdo_connect->beginTransaction();
$stream = $my_pdo_connect->pgsqlLOBOpen($oid, 'r');
$file = fopen('my_file', 'w');
stream_copy_to_stream($stream, $file);
fclose($file);