토토 사이트 순위 명령Postgres|libpq. 따라서 기능이 필요합니다 이 네트워크 연결에 직접 액세스하려면 응용 프로그램이 사용될 수 있습니다. 이 기능의 장점.
이 기능은 a를 얻은 후에 만 실행해야합니다.pgres_copy_out또는pgres_copy_in결과 객체PQEXEC또는pqgetresult.
pqgetlinea Newline-Terminated 문자 라인 ( 백엔드 서버) 크기 길이의 버퍼 문자열로.
int pqgetline (pgconn *conn, char *string, int 길이)좋아요fgets(3),이 일상적인 토토 사이트 순위 최대 1 개의 문자 문자열.gets6283_6366pqgetline반환eofa eof, 0 전체 라인을 읽고 버퍼가 가득 찬 경우 1 그러나 종료 Newline은 아직 읽지 않았습니다.
신청서가 새 줄을 확인 해야하는지 확인해야합니다. 두 문자 "\."로 구성되며 백엔드 서버가 토토 사이트 순위 결과 보내기를 마쳤습니다. 명령. 응용 프로그램이 더 많은 줄을받을 수있는 경우 길이 1 캐릭터보다 길지만, 치료가 필요합니다. "\"를 인식합니다. 올바르게 라인 (예를 들어, 그렇지 않습니다. 터미네이터 라인의 긴 데이터 라인의 끝을 오해). 그만큼 코드src/bin/psql/copy.c포함 토토 사이트 순위 프로토콜을 올바르게 처리하는 예제.
pqgetLineAnynca Newline-Terminated 문자 라인 ( 백엔드 서버) 차단없이 버퍼로.
int pqgetLineAneAnc (pgconn *conn, char *버퍼, int bufsize)이 루틴은와 유사합니다.pqgetline이지만 응용 프로그램에서 사용할 수 있습니다 복사 데이터를 비동기 적으로 읽어야합니다. 토토 사이트 순위 명령을 발행하고 Apgres_copy_out응답, 신청서가 호출해야합니다pqconsumeInputandpqgetLineAnync데이터 종료 신호가 될 때까지 감지. 같지 않은pqgetline,이 일상은 데이터 끝을 감지하는 데 책임이 있습니다. 각각에 부르다,pqgetLineAnync데이터를 반환합니다 완전한 Newline-Perminated Data Line을 사용할 수있는 경우 LIBPQ의 입력 버퍼 또는 들어오는 데이터 라인이 너무 길다면 발신자가 제공하는 버퍼에 맞습니다. 그렇지 않으면 데이터가 없습니다 나머지 줄이 도착할 때까지 반환됩니다.
코피 종료 데이터 마커가있는 경우 루틴은 -1을 반환합니다 데이터를 사용할 수없는 경우 인식되었거나 0, 또는 긍정적 인 반환 된 데이터의 바이트 수를 제공하는 숫자. -1이면 반품, 발신자는 다음 전화해야합니다PQENDCOPY그리고 정상으로 돌아갑니다 처리. 반환 된 데이터는 Newline을 넘어 확장되지 않습니다 성격. 가능하면 전체 라인이 하나로 반환됩니다. 시간. 그러나 발신자가 제공하는 버퍼가 너무 작다면 백엔드가 보낸 줄을 보유하면 부분 데이터 라인이 반환됩니다. 이것은 마지막 여부를 테스트하여 감지 할 수 있습니다 반환 바이트는 "입니다.\ n"여부 반환 된 문자열은 무효가 끝나지 않습니다. (추가하려면 a NULL 종료, bufsize를 더 작은 것보다 통과하십시오. 방은 실제로 이용 가능합니다.)
pqputline무효가 종결 된 것을 보냅니다 백엔드 서버에 문자열. OK 인 경우 0을 반환합니다.eof문자열을 보낼 수없는 경우.
int pqputline (pgconn *conn, const char *string);참고 응용 프로그램은 두 문자를 명시 적으로 보내야합니다 "\."최종 라인에서 데이터 전송을 마쳤다는 백엔드.
pqputnbytes보내기 a 백엔드 서버에 대한 널없는 문자열. IF가 0을 반환합니다 좋아요, 문자열을 보낼 수없는 경우.
int pqputnbytes (pgconn *conn, const char *버퍼, int nbytes);이것은 똑같습니다pqputline, 데이터 버퍼를 보내야 할 바이트 수는 직접 지정됩니다.
pqendcopy백엔드와 동기화됩니다. 이 기능은 백엔드가 토토 사이트 순위을 마칠 때까지 기다립니다. 그것 마지막 문자열이 전송 될 때 발행해야합니다. 사용pqputline또는 언제 마지막 문자열은를 사용하여 백엔드에서 수신되었습니다.pggetline. 발행해야합니다 백엔드는 프론트 엔드와 "동기화"를 얻을 수 있습니다. 돌아 왔을 때 이 기능에서 백엔드는 다음을받을 준비가되었습니다. 질문. 반환 값은 성공적인 완료시 0이 아닌 0입니다 그렇지 않으면.
int pqendcopy (pgconn *conn);
예를 들어 :
pqexec (conn, "테이블 foo (int4, b char (16), d float8)); pqexec (conn, "stdin에서 foo를 복사한다"); pqputline (Conn, "3 \ Thello World \ t4.5 \ n"); pqputline (conn, "4 \ tgoodbye world \ t7.11 \ n"); ... pqputline (conn, "\\. \ n"); pqendcopy (conn);
사용시pqgetresult, 응용 프로그램은 A에 응답해야합니다.pgres_copy_out실행하여 결과pqgetline반복적으로pqendcopy터미네이터 라인이 보입니다. 그것 그런 다음로 돌아 가야합니다.pqgetresult루프까지pqgetresultNULL을 반환합니다. 마찬가지로 Apgres_copy_in결과입니다 일련의 처리pqputline전화 뒤 이어PQENDCOPY, 그런 다음으로 돌아갑니다.pqgetresult루프. 이 계약은 할 것입니다 일련의에 내장 된 사본 또는 복사 명령을 확인하십시오.SQL명령이 실행됩니다 바르게.
이전 응용 프로그램은 사본을 제출하거나 복사 할 가능성이 높습니다. 을 통해PQEXEC트랜잭션은 이후에 이루어집니다.PQENDCOPY. 이것 토토 사이트 순위/아웃이 유일한 경우에만 올바르게 작동합니다SQL쿼리 문자열의 명령.