选择显示字体大小

postgresql数据库学习手册之libpq-c库---与 copy 命令相关的函数

1.7. 与 copy 命令相关的函数

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

这些函数应该只在从 pqexec 或 pqgetresult 获得了 pgres_copy_out 或 pgres_copy_in 结果对象的情况下执行.

*

pqgetline 读取一个以回车符(换行符)结尾的字符行中指定字节数的字符 (由后端服务器传输)到一个字符串缓冲区.

int pqgetline(pgconn *conn,
char *string,
int length)

类似 fgets,这个过程拷贝最多 length-1 个字符到字符串里.但是它会象 gets那样把结尾的换行符转换成一个字节零. pqgetline 在输入结束时返回 eof ,如果整行都被读取了返回 0,如果缓冲区填满了而还没有遇到结束的换行符则返回 1.

注意,应用程序必须检查新行是否包含两个字符 "\.",这表明后端服务器已经完成了 copy 命令的结果集的发送.如果应用可能收到超过 length-1 字符长的字符,我们就应该确保正确识别"\."行(例如,不要把一个长的行的结束当作一个终止行). src/bin/psql/copy.c 里的代码包含正确控制 copy 协议的过程.
*

pqgetlineasync 不做阻塞地读取一行以换行符结尾的字符(由后端服务器传输)到一个缓冲区中.

int pqgetlineasync(pgconn *conn,
char *buffer,
int bufsize)

这个过程类似于 pqgetline,但是可以用于那些必须异步地读取 copy 数据的应用,因而是不阻塞的.在使用了 copy 命令和获取了 pgres_copy_out响应之后,应用应该调用 pqconsumeinput 和 pqgetlineasync 直到收到数据结束的信号.不象pqgetline,这个过程负责检测数据结束.在每次调用时,如果libpq 的输入缓冲区内有可用的一个完整的换行符结尾的数据行或者调用者声明的缓冲区小于到来的数据行的长度, pqgetlineasync 都将返回数据.否则,在其他数据到达之前不会返回数据.

如果见到了拷贝数据结束的信号,此过程返回 -1,如果没有可用数据返回 0,或者是给出一个正数表明返回的数据的字节数.如果返回 -1,调用者下一步必须调用 pqendcopy,然后回到正常处理.返回的数据将不会超出换行符的范围.如果可能,每次将返回一个完整行.但如果调用者提供的缓冲区太小,无法容下后端发出的整行,那么将返回部分行.这个可以通过测试返回的最后一个字节是否 "\n" 来确认.返回的字符串不是空结尾的.(如果你想得到一个空结尾的字串,确保你传递了一个 bufsize 比实际大小少一字节的缓冲区.)
*

pqputline 向后端服务器发送一个空结尾的字符串.成功时返回 0,如果不能发送字符串返回 eof.


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons