28.3. �ͻ��˽ӿ�

�������� PostgreSQL �ͻ��˽ӿڿ��ṩ�����ʴ�������ʩ�� ����ʹ����Щ�������еĴ���������������һ��SQL������ʵ�֡� �����Ҫ������ PostgreSQL 6.5 ������һ���ϸ��Ҫ����Ȼ����ǰ�İ汾�������������Ҫ�����������һ��ᵼ�´���ı��֡��� PostgreSQL�����ӿ��Ƕ� Unix �ļ�ϵͳ��ģ�£��з���� open��read�� write�� lseek���ȣ�

ʹ�� libpq ��������ӿڵĵĿͻ���Ӧ��Ӧ�ð���ͷ�ļ� libpq/libpq-fs.h ���Һ� libpq �����ӡ�

28.3.1. ���������

����

Oid lo_creat(PGconn *conn, int mode);

����һ���µĴ���� mode��һ��λ���룬 �����¶���IJ�ͬ���ԡ� ����ʹ�õķ��ų����� libpq/libpq-fs.h �г��� �������ͣ�����д�������ߣ��Ƕ�λ INV_READ �� INV_WRITE���л�������ɵġ� ����ĵ�ʮ��λ�Ǵ����Ҫ������ڵĴ洢�������š� ���ڳ� Berkeley ��������������Ľڵ㣬��Щλ��Ӧ�����㡣 ��������������ʵ����Ҳ�����κ����飬��������һ����������λ����Ҫ���ϣ��Ա�����󡣣� ����ֵ�Ǹ����´����� OID��������ʧ�ܵ�ʱ���� InvalidOid���㣩��

���ӣ�

inv_oid = lo_creat(conn, INV_READ|INV_WRITE);

28.3.2. ��������

Ҫ��һ������ϵͳ�ļ������Ϊ����󣬵���

Oid lo_import(PGconn *conn, const char *filename);

filename ����ָ��Ҫ�������Ϊ�����IJ���ϵͳ�ļ�·����������ֵ�Ǹ����´����� OID�� ���ʧ���򷵻� InvalidOid���㣩����ע������ļ����ɿͻ��˽ӿڿ��ȡ�ģ� �����Ƿ������ˣ��������������ڿͻ����ļ�ϵͳ�ϲ��ҿ��Ա��ͻ�Ӧ�ö�ȡ��

28.3.3. ��������

Ҫ��һ����������Ϊ����ϵͳ�ļ�������

int lo_export(PGconn *conn, Oid lobjId, const char *filename);

lobjId����ָ��Ҫ����Ĵ���� OID��filename ����ָ������ϵͳ�ļ���·��������ע������ļ����ɿͻ��˽ӿڿ�д��ģ� �����Ƿ������ˡ��ɹ�ʱ���� 1��ʧ��ʱ���� -1��

28.3.4. ��һ�����еĴ����

Ҫ��һ���ִ�Ĵ�����д������

int lo_open(PGconn *conn, Oid lobjId, int mode);

����lobjIdָ��Ҫ�򿪵Ĵ����� OID �������ʶ���� modeλ���Ƹö��������ڶ� ��INV_READ���� д(INV_WRITE)���Ƕ�д�� һ����������䴴��֮ǰ���ܱ��򿪡� lo_open ����һ�����Ǹ��ģ�������ʶ�����Ժ�� lo_read��lo_write�� lo_lseek��lo_tell���� lo_close�����������ֻ���ڵ�ǰ��������Ч�� ʧ�ܵ�ʱ�򣬷��� -1��

28.3.5. �����������

����

int lo_write(PGconn *conn, int fd, const char *buf, size_t len);

��buf��������������fd��дlen�ֽڣ� ����fd������ǰ��һ�� lo_open ���õķ��ء� ����ʵ��д���ֽ���������ʱ���ظ�����

28.3.6. �Ӵ�����ж�ȡ����

����

int lo_read(PGconn *conn, int fd, char *buf, size_t len);

�Ӵ���������� fd �ж�ȡlen�ֽ����ݵ�buf�С� fd����������ǰ���һ�� lo_open���õķ��ء� ����ʵ�ʶ�ȡ���ֽ���������ʱ������һ��������

28.3.7. ����������ݵIJ���

Ҫ�ı���һ���������������صĶ�дλ�ã�����

int lo_lseek(PGconn *conn, int fd, int offset, int whence);

������̰ѵ�ǰfd����Ĵ����������λ��ָ���ƶ��� offsetָ�����µ�λ�á� ����whence�ĺϷ���ȡֵ�� SEEK_SET���Ӷ���ͷ��ʼ�ң���SEEK_CUR���ӵ�ǰλ�ÿ�ʼ�ң�����SEEK_END ���Ӷ����β��ʼ�ң�������ֵ����λ��ָ�룬�������Ϊ -1��

28.3.8. ��ȡһ�������ĵ�ǰ����λ��

Ҫ��ȡһ��������������ĵ�ǰ����дλ�ã�����

int lo_tell(PGconn *conn, int fd);

����д��󣬷���ֵ�Ǹ�����

28.3.9. �ر�һ�������������

����ͨ������

int lo_close(PGconn *conn, int fd);

�ر�һ�������������������fd�� lo_open���صĴ��������������ɹ�ʱ�� lo_close �����㣮����ʱ������ֵ�Ǹ�����

�κ��������βʱ��Ȼ�򿪵Ĵ���������������������ʱ�Զ��رա�

28.3.10. ɾ��һ�������

�����ݿ���ɾ��һ������󣬵���

int lo_unlink(PGconn *conn, Oid lobjId);

lobjId��������Ҫɾ���Ĵ����� OID�� �ɹ�ʱ���� 1��ʧ��ʱ���� -1��