이 토토 사이트는 지원되지 않는 Postgre토토 사이트 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.현재버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

샘플 프로그램

/*-----------------------------------------------------
          *
          * testlo.c--
          * 토토 사이트로 대형 객체를 사용하여 테스트
          *
          * 저작권 (c) 1994, 캘리포니아 대학교 리전트
          *
          *
          * 신원 확인
          * /usr/local/devel/pglite/cvs/src/doc/manual.me,v 1.16 1995/09/01 23:55:00 jolly Exp
          *
          *--------------------------------------------------
          */
         #include <stdio.h
         #include "토토 사이트-fe.h"
         #include "토토 사이트/토토 사이트-fs.h"

         #BUFSIZE 1024 정의

         /*
          * importFile * "in_filename" 파일을 대형 개체 "lobjOid"로 데이터베이스에 가져오기
          *
          */
         Oid importFile(PGconn *conn, char *파일 이름)

             oid lobjId;
             int lobj_fd;
             char buf[BUFSIZE];
             int nbytes, tmp;
             int fd;

             /*
              * 읽을 파일을 엽니다.
              */
             fd = open(파일명, O_RDONLY, 0666);
             if (fd < 0)  /* 오류 */
              fprintf(stderr, "유닉스 파일 %s을(를) 열 수 없습니다\n", 파일명);

             /*
              * 대형 객체 생성
              */
             lobjId = lo_creat(conn, INV_READ|INV_WRITE);
             if (lobjId == 0) 
              fprintf(stderr, "대형 개체를 생성할 수 없습니다\n");

             lobj_fd = lo_open(conn, lobjId, INV_WRITE);
             /*
              * Unix 파일에서 읽어와 반전 파일에 쓰기
              */
             while ((nbytes = read(fd, buf, BUFSIZE))  0) 
              tmp = lo_write(conn, lobj_fd, buf, nbytes);
              if (tmp < nbytes) 
                  fprintf(stderr, "대형 객체를 읽는 중 오류가 발생했습니다\n");

             (무효) 닫기(fd);
             (공허) lo_close(conn, lobj_fd);

             lobjId를 반환합니다.

         무효 선택(PGconn *conn, Oid lobjId, int start, int len)

             int lobj_fd;
             char* 버프;
             int nbytes;
             int nread;

             lobj_fd = lo_open(conn, lobjId, INV_READ);
             if (lobj_fd < 0) 
              fprintf(stderr,"대형 개체 %d을(를) 열 수 없습니다\n",
                   lobjId);

             lo_lseek(conn, lobj_fd, 시작, SEEK_SET);
             buf = malloc(len+1);

             읽기 = 0;
             while (len - nread  0) 
              nbytes = lo_read(conn, lobj_fd, buf, len - nread);
              buf[nbytes] = ' ';
              fprintf(stderr," %s", buf);
              nread += nbytes;

             fprintf(stderr,"\n");
             lo_close(conn, lobj_fd);

         무효 덮어쓰기(PGconn *conn, Oid lobjId, int start, int len)

             int lobj_fd;
             char* 버프;
             int nbytes;
             int로 작성됨;
             나는 int;

             lobj_fd = lo_open(conn, lobjId, INV_READ);
             if (lobj_fd < 0) 
              fprintf(stderr,"대형 개체 %d을(를) 열 수 없습니다\n",
                   lobjId);

             lo_lseek(conn, lobj_fd, 시작, SEEK_SET);
             buf = malloc(len+1);

             (i=0;i<len;i++)에 대해
              buf[i] = 'X';
             buf[i] = ' ';

             쓰여진 = 0;
             while (len - nwrite  0) 
              nbytes = lo_write(conn, lobj_fd, buf + nwrite, len - nwrite);
              n기록 += nbytes;

             fprintf(stderr,"\n");
             lo_close(conn, lobj_fd);

         /*
          * importFile * 대형 개체 "lobjOid"를 "out_filename" 파일로 내보내기
          *
          */
         void importFile(PGconn *conn, Oid lobjId, char *filename)

             int lobj_fd;
             char buf[BUFSIZE];
             int nbytes, tmp;
             int fd;

             /*
              * 반전 "객체" 생성
              */
             lobj_fd = lo_open(conn, lobjId, INV_READ);
             if (lobj_fd < 0) 
              fprintf(stderr,"대형 개체 %d을(를) 열 수 없습니다\n",
                   lobjId);

             /*
              * 쓸 파일을 엽니다.
              */
             fd = open(파일명, O_CREAT|O_WRONLY, 0666);
             if (fd < 0)  /* 오류 */
              fprintf(stderr, "유닉스 파일 %s을(를) 열 수 없습니다\n",
                   파일명);

             /*
              * Unix 파일에서 읽어와 반전 파일에 쓰기
              */
             while ((nbytes = lo_read(conn, lobj_fd, buf, BUFSIZE))  0) 
              tmp = write(fd, buf, nbytes);
                 if (tmp < nbytes) 
                  fprintf(stderr,"%s을(를) 쓰는 중 오류가 발생했습니다\n",
                       파일명);

             (공허) lo_close(conn, lobj_fd);
             (무효) 닫기(fd);

             반품;

         무효
         exit_nicely(PGconn* conn)

           PQfinish(콘);
           출구(1);

         정수
         메인(int argc, char **argv)

             char *in_filename, *out_filename;
             char *데이터베이스;
             Oid lobjOid;
             PGconn *콘;
             PGresult *res;

             if (argc != 4) 
              fprintf(stderr, "사용법: %s Database_name in_filename out_filename\n",
                   인수[0]);
              출구(1);

             데이터베이스 = argv[1];
             in_filename = argv[2];
             out_filename = argv[3];

             /*
              * 연결 설정
              */
             conn = PQsetdb(NULL, NULL, NULL, NULL, 데이터베이스);

             /* 백엔드 연결이 성공적으로 이루어졌는지 확인하세요 */
             if (PQstatus(conn) == CONNECTION_BAD) 
              fprintf(stderr,"데이터베이스 '%s'에 대한 연결에 실패했습니다.\n", 데이터베이스);
              fprintf(stderr,"%s",PQerrorMessage(conn));
              exit_nicely(conn);

             res = PQexec(conn, "시작");
             PQclear(res);

             printf("%s 파일 가져오기\n", in_filename);
         /* lobjOid = importFile(conn, in_filename); */
             lobjOid = lo_import(conn, in_filename);
         /*
             printf("대형 객체 %d로.\n", lobjOid);

             printf("대형 개체의 1000-2000바이트 선택\n");
             pickout(conn, lobjOid, 1000, 1000);

             printf("대형 개체의 1000-2000바이트를 X로 덮어쓰기\n");
             덮어쓰기(conn, lobjOid, 1000, 1000);
         */

             printf("대형 개체를 파일 %s로 내보내는 중\n", out_filename);
         /* importFile(conn, lobjOid, out_filename); */
             lo_export(conn, lobjOid,out_filename);

             res = PQexec(conn, "끝");
             PQclear(res);
             PQfinish(콘);
             출구(0);