이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 32.10. 토토 결과 토토 결과과 토토 결과 토토 결과버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

1.7. 토토 꽁 머니 명령과 관련된 기능

토토 꽁 머니 명령포스트그레SQL읽거나 쓸 수 있는 옵션이 있습니다 다음에서 사용하는 네트워크 연결로libpq. 그래서 꼭 필요한 기능이 이 네트워크 연결에 직접 액세스하여 애플리케이션이 이 기능의 장점을 활용하세요.

이 기능은 다음을 얻은 후에만 실행되어야 합니다.PGRES_토토 꽁 머니_OUT또는PGRES_토토 꽁 머니_IN결과 객체PQexec또는PQgetResult.

  • PQgetline읽기 줄 바꿈으로 끝나는 문자 줄(에 의해 전송됨) 백엔드 서버)를 길이 길이의 버퍼 문자열로 변환합니다.

    int PQgetline(PGconn *conn,
                  문자 *문자열,
                  정수 길이)

    좋아요fgets, 이 루틴 최대 length-1 문자를 문자열에 복사합니다. 그것은 같다얻음그러나 그 점에서는 종료 줄 바꿈을 0바이트로 변환합니다.PQgetline반환EOF입력 끝에서 전체 줄인 경우 0 읽었으며, 버퍼가 가득 차 있지만 1이면 개행 종료는 아직 읽혀지지 않았습니다.

    응용프로그램은 새로운 줄은 두 문자로 구성됩니다.\., 이는 백엔드 서버가 복사 명령 결과 전송이 완료되었습니다. 만약 애플리케이션이 length-1보다 큰 행을 수신할 수 있습니다. 문자가 길기 때문에 인식할 수 있도록 주의가 필요합니다.\.라인이 정확합니다(그리고 그렇지 않습니다. 예를 들어, 긴 데이터 라인의 끝을 종결자로 착각합니다. 라인). 코드는src/bin/psql/토토 꽁 머니.c예제 루틴이 포함되어 있습니다. 복사 프로토콜을 올바르게 처리합니다.

  • PQgetlineAsync읽기 줄 바꿈으로 끝나는 문자 줄(에 의해 전송됨) 백엔드 서버)를 차단하지 않고 버퍼에 넣습니다.

    int PQgetlineAsync(PGconn *conn,
                       char *버퍼,
                       int bufsize)

    이 루틴은 다음과 유사합니다.PQgetline, 하지만 다음에서 사용할 수 있습니다. COPY 데이터를 비동기식으로 읽어야 하는 애플리케이션, 즉 차단하지 않고. 토토 꽁 머니 명령을 실행하고 다음을 얻었습니다.PGRES_토토 꽁 머니_OUT응답, 애플리케이션이 호출되어야 합니다.PQconsumeInput그리고PQgetlineAsync데이터 끝 신호까지 감지됩니다. 달리PQgetline, 이 루틴은 데이터 끝을 감지하는 역할을 합니다. 통화할 때마다,PQgetlineAsync완전히 줄바꿈으로 끝나는 데이터 라인인 경우 데이터를 반환합니다. 다음에서 사용할 수 있습니다.libpq의 입력 버퍼 또는 들어오는 데이터 라인이 너무 길어서 맞지 않는 경우 호출자가 제공한 버퍼에 있습니다. 그렇지 않으면 데이터가 없습니다. 나머지 줄이 도착할 때까지 반환됩니다.

    데이터 복사 끝 표시가 다음과 같은 경우 루틴은 -1을 반환합니다. 인식되었습니다. 데이터가 없으면 0, 양수입니다. 반환된 데이터의 바이트 수를 나타내는 숫자입니다. -1인 경우 반환되면 발신자는 다음 통화를 해야 합니다.PQend토토 꽁 머니, 그런 다음 정상으로 돌아갑니다. 처리. 반환된 데이터는 다음 이상으로 확장되지 않습니다. 개행 문자. 가능하다면 전체 라인이 반환됩니다. 한 번에. 그러나 호출자가 제공한 버퍼가 너무 백엔드에서 전송한 라인을 보관하기 위한 작은 크기, 그 다음에는 부분 데이터 라인이 반환됩니다. 이는 테스트를 통해 감지할 수 있습니다. 마지막으로 반환된 바이트가 무엇인지 여부\n아니다. 반환된 문자열은 null로 끝나지 않습니다. (당신이 종료 null을 추가하려면 a를 전달해야 합니다.버프크기다음보다 하나 작음 실제로 사용 가능한 방입니다.)

  • PQputline다음을 보냅니다 백엔드 서버에 대한 null 종료 문자열입니다. 다음과 같은 경우 0을 반환합니다. 알았어,EOF보낼 수 없는 경우 문자열.

    int PQputline(PGconn *conn,
                  const char *string);

    응용 프로그램은 명시적으로 두 가지를 보내야 합니다. 문자\.마지막 줄에 백엔드에 전송이 완료되었음을 나타냅니다. 데이터.

  • PQputnbytes다음을 보냅니다 null로 끝나지 않는 문자열을 백엔드 서버에 보냅니다. 0을 반환합니다. 괜찮다면,EOF을 보낼 수 없는 경우 문자열.

    int PQputnbytes(PGconn *conn,
                    const char *버퍼,
                    int nbytes);

    이것은 정확히 같습니다PQputline, 단, 데이터 버퍼가 필요한 경우는 제외 전송할 바이트 수가 다음과 같으므로 Null로 끝나서는 안 됩니다. 직접 지정합니다.

  • PQend토토 꽁 머니다음과 동기화 백엔드. 이 함수는 백엔드가 완료될 때까지 기다립니다. 복사를 마쳤습니다. 마지막으로 발행될 때 발행되어야 합니다. 문자열은 다음을 사용하여 백엔드로 전송되었습니다.PQputline또는 마지막 문자열이 다음을 사용하여 백엔드에서 수신됨PGgetline. 발급되거나 백엔드에 있어야 합니다. 얻을 수 있다"동기화되지 않음"와 함께 프론트엔드. 이 함수에서 반환되면 백엔드는 다음과 같습니다. 다음 SQL 명령을 받을 준비가 되었습니다. 반환 값은 0입니다. 성공적으로 완료되면, 그렇지 않으면 0이 아닙니다.

    int PQend토토 꽁 머니(PGconn *conn);

    예를 들면:

    PQexec(conn, "CREATE TABLE foo (a int4, b char(16), d 배정밀도)");
    PQexec(conn, "STDIN에서 foo 복사");
    PQputline(conn, "3\thello world\t4.5\n");
    PQputline(conn,"4\t안녕하세요 세상\t7.11\n");
    ...
    PQputline(conn,"\\.\n");
    PQend토토 꽁 머니(콘);

사용 시PQgetResult, 애플리케이션은 a에 응답해야 합니다.PGRES_토토 꽁 머니_OUT실행 결과PQgetline반복적으로, 이어서PQend토토 꽁 머니종료 줄이 표시된 후. 그것 그러면 다음으로 돌아가야 합니다.PQgetResult다음까지 반복PQgetResultNULL을 반환합니다. 마찬가지로PGRES_토토 꽁 머니_IN결과는 다음에 의해 처리됩니다. 일련의PQputline따라오는 호출 으로PQend토토 꽁 머니, 그런 다음으로 돌아갑니다.PQgetResult루프. 이 배열 복사 또는 복사 명령이 일련의SQL명령은 다음과 같습니다 올바르게 실행되었습니다.

이전 신청서는 사본을 제출하거나 복사할 가능성이 높습니다. 를 통해PQexec그리고 다음과 같이 가정합니다. 거래는 다음 이후에 완료됩니다.PQend토토 꽁 머니. 이는 다음과 같은 경우에만 올바르게 작동합니다. 복사/복사만 가능합니다.SQL명령 문자열의 명령.