1.7. 与 COPY 命令相关的函数

PostgreSQL 里的 COPY 命令里有用于 libpq 里从网络联接读出或者写入的选项. 因此,这些函数有必要直接访问网络联接,以便应用可以充分利用这个功能.

这些函数应该只在从 PQexecPQgetResult 获得了 PGRES_COPY_OUTPGRES_COPY_IN 结果对象的情况下执行.

在使用 PQgetResult时,应用应该对 PGRES_COPY_OUT 的结果做出反应:重复调用 PQgetline ,并且在收到结束行时调用 PQendcopy. 然后应该返回到 PQgetResult 循环直到 PQgetResult 返回 NULL. 类似地, PGRES_COPY_IN 结果是用一系列 PQputline 调用最后跟着 PQendcopy,然后返回到 PQgetResult 循环. 这样的排列将保证嵌入到一系列 SQL 命令里的 copy in 或 copy out 命令将被正确执行.

旧的应用大多通过 PQexec 提交一个 copy in 或 copy out 命令并且假设在 PQendcopy 后事务完成. 这样只有在copy in/out 是命令字串里的唯一的 SQL 命令时才能正确工作.