2025 년 7 월 17 일 : | 윈 토토 : 윈 토토 18 베타 2
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

3.6. 사본 명령과 관련된 함수

COPY명령Postgres읽거나 쓸 수있는 옵션이 있습니다 에 사용 된 네트워크 연결에libpq ++. 따라서 기능이 필요합니다 이 네트워크 연결에 직접 액세스하여 응용 프로그램이 필요할 수 있습니다 이 기능의 최대한의 이점.

  • pgdatabase :: getline읽기 a Newline-Terminated 문자 라인 ( 백엔드 서버) 버퍼로String크기길이.

    int pgdatabase :: getline (char* string, int length)

    유닉스 시스템 루틴처럼fgets (3),이 루틴은까지 복사합니다.길이-1문자로String. 그것은 좋다gets (3)종료 Newline을 널 캐릭터로 변환합니다.

    pgdatabase :: getlineEOF를 반환합니다 파일 끝에서 전체 라인을 읽은 경우 0, 1은 1 버퍼가 가득 찼지만 종료 Newline은 아직 없습니다. 읽었습니다.

    신청서가 새로운 지 확인 해야하는지 확인해야합니다. 라인은 단일 기간 ( ".")으로 구성되며 백엔드 서버가copy. 따라서 응용 프로그램 인 경우 이상의 라인을받을 것으로 기대합니다길이-1문자 길이, 응용 프로그램은 반환 값pgdatabase :: getline매우 조심스럽게.

  • pgdatabase :: putline보내기 a 널리 터진Stringto 백엔드 서버.

    void pgdatabase :: putline (char* string)

    응용 프로그램은 단일 기간을 명시 적으로 보내야합니다 문자 ( ".")는 백엔드를 나타내는 것으로 데이터 보내기 완료.

  • pgdatabase :: endcopy백엔드.

    int pgdatabase :: endcopy ()
    이 기능은 백엔드가 처리가 완료 될 때까지 기다립니다 그만큼COPY. 언제든 발급해야합니다 마지막 문자열은를 사용하여 백엔드로 전송되었습니다.pgdatabase :: putline또는 마지막 문자열이있는 경우 사용을 사용하여 백엔드에서 접수되었습니다.pgdatabase :: getline. 발행해야합니다 백엔드는 프론트 엔드와 "동기화"를 얻을 수 있습니다. 돌아 왔을 때 이 기능, 백엔드는 다음 쿼리를받을 준비가되었습니다.

    반환 값은 성공적으로 완료시 0이 아닌 0입니다 그렇지 않으면.

예를 들어 :

pgdatabase 데이터;
data.exec ( "테이블 foo (a int4, b char (16), d double precision);
data.exec ( "stdin에서 foo");
data.putline ( "3 \ Thello World \ t4.5 \ n");
data.putline ( "4 \ tgoodbye world \ t7.11 \ n");
& ...
data.putline ( "\\. \ n");
data.endcopy ();