PostgreSQL 8.0.0 �����ĵ���PostgreSQL �й� ������ | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 28. ����� | Fast Forward | Next |
�������� PostgreSQL �ͻ��˽ӿڿ��ṩ�����ʴ�������ʩ�� ����ʹ����Щ�������еĴ���������������һ��SQL������ʵ�֡� �����Ҫ������ PostgreSQL 6.5 ������һ���ϸ��Ҫ����Ȼ����ǰ�İ汾�������������Ҫ�����������һ��ᵼ�´���ı��֡��� PostgreSQL�����ӿ��Ƕ� Unix �ļ�ϵͳ��ģ�£��з���� open��read�� write�� lseek���ȣ�
ʹ�� libpq ��������ӿڵĵĿͻ���Ӧ��Ӧ�ð���ͷ�ļ� libpq/libpq-fs.h ���Һ� libpq �����ӡ�
����
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);
Ҫ��һ������ϵͳ�ļ������Ϊ�������
Oid lo_import(PGconn *conn, const char *filename);
filename ����ָ��Ҫ�������Ϊ�����IJ���ϵͳ�ļ�·����������ֵ�Ǹ����´����� OID�� ���ʧ���� InvalidOid���㣩����ע������ļ����ɿͻ��˽ӿڿ��ȡ�ģ� �����Ƿ������ˣ��������������ڿͻ����ļ�ϵͳ�ϲ��ҿ��Ա��ͻ�Ӧ�ö�ȡ��
Ҫ��һ����������Ϊ����ϵͳ�ļ�������
int lo_export(PGconn *conn, Oid lobjId, const char *filename);
lobjId����ָ��Ҫ����Ĵ���� OID��filename ����ָ������ϵͳ�ļ���·��������ע������ļ����ɿͻ��˽ӿڿ�д��ģ� �����Ƿ������ˡ��ɹ�ʱ���� 1��ʧ��ʱ���� -1��
Ҫ��һ���ִ�Ĵ�����д������
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��
����
int lo_write(PGconn *conn, int fd, const char *buf, size_t len);
��buf��������������fd��дlen�ֽڣ� ����fd������ǰ��һ�� lo_open ���õķ��ء� ����ʵ��д���ֽ���������ʱ���ظ�����
����
int lo_read(PGconn *conn, int fd, char *buf, size_t len);
�Ӵ���������� fd �ж�ȡlen�ֽ����ݵ�buf�С� fd����������ǰ���һ�� lo_open���õķ��ء� ����ʵ�ʶ�ȡ���ֽ���������ʱ������һ��������
Ҫ�ı���һ���������������صĶ�дλ�ã�����
int lo_lseek(PGconn *conn, int fd, int offset, int whence);
������̰ѵ�ǰfd����Ĵ����������λ��ָ���ƶ��� offsetָ�����µ�λ�á� ����whence�ĺϷ���ȡֵ�� SEEK_SET���Ӷ���ͷ��ʼ�ң���SEEK_CUR���ӵ�ǰλ�ÿ�ʼ�ң�����SEEK_END ���Ӷ����β��ʼ�ң�������ֵ����λ��ָ�룬�������Ϊ -1��
Ҫ��ȡһ��������������ĵ�ǰ����дλ�ã�����
int lo_tell(PGconn *conn, int fd);
����ͨ������
int lo_close(PGconn *conn, int fd);
�ر�һ�������������������fd�� lo_open���صĴ��������������ɹ�ʱ�� lo_close �����㣮����ʱ������ֵ�Ǹ�����
�κ��������βʱ��Ȼ�Ĵ���������������������ʱ�Զ��رա�