그복사명령포스트그레읽거나 쓸 수 있는 옵션이 있습니다 다음에서 사용하는 네트워크 연결로libpq++. 그래서 꼭 필요한 기능이 이 네트워크 연결에 직접 액세스하여 애플리케이션이 이 기능을 최대한 활용하세요.
PgDatabase::GetLine읽음 줄 바꿈으로 끝나는 문자 줄(에 의해 전송됨) 백엔드 서버)를 버퍼로문자열크기길이.
int PgDatabase::GetLine(char* 문자열, int 길이)
유닉스 시스템 루틴과 유사함fgets (3), 이 루틴은 최대길이-1문자로문자열. 그것은 좋다(3)을 얻음그러나 그 점에서는 종료 개행 문자를 널 문자로 변환합니다.
PgDatabase::GetLineEOF를 반환합니다. 파일 끝에서 전체 줄을 읽었으면 0, 1이면 버퍼가 가득 찼지만 종료 줄 바꿈이 아직 완료되지 않았습니다. 읽었습니다.
응용프로그램은 새로운 줄은 단일 마침표(".")로 구성됩니다. 백엔드 서버가 결과 전송을 완료했습니다.복사. 그러므로 신청을 하면 다음보다 많은 라인을 수신할 것으로 예상됩니다.길이-1문자 길이이므로 응용 프로그램은 다음을 확인해야 합니다. 반환 값PgDatabase::GetLine아주 조심스럽게.
PgDatabase::PutLine다음을 보냅니다 null로 종료됨문자열에 백엔드 서버.
void PgDatabase::PutLine(char* string)
응용프로그램은 명시적으로 단일 마침표를 보내야 합니다 문자(".")를 사용하여 백엔드에 이를 나타냅니다. 데이터 전송을 마쳤습니다.
PgDatabase::End사설 토토동기화 백엔드.
int PgDatabase::End사설 토토()이 함수는 백엔드가 처리를 완료할 때까지 기다립니다. 그만큼복사. 다음 중 하나에 발행되어야 합니다. 마지막 문자열은 다음을 사용하여 백엔드로 전송되었습니다.PgDatabase::PutLine또는 마지막 문자열이 다음을 사용하여 백엔드에서 수신되었습니다.PgDatabase::GetLine. 발급받아야 하거나, 백엔드가 프런트엔드와 "동기화되지 않을" 수 있습니다. 에서 돌아올 때 이 함수를 사용하면 백엔드가 다음 쿼리를 수신할 준비가 됩니다.
성공적으로 완료되면 반환 값은 0이며 0이 아닙니다. 그렇지 않으면.
예를 들어:
Pg데이터베이스 데이터;
data.Exec("테이블 foo 생성(a int4, b char(16), d 배정밀도)");
data.Exec("표준 입력에서 foo를 복사합니다.");
data.PutLine("3\tHello World\t4.5\n");
data.PutLine("4\tGoodbye World\t7.11\n");
&...
data.PutLine("\\.\n");
데이터.EndCopy();