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

기능 COPY 스포츠 토토 사이트과 관련됨

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

이 기능은 다음을 얻은 후에만 실행되어야 합니다. PQexec의 PGRES_COPY_OUT 또는 PGRES_COPY_IN 결과 개체 또는 PQgetResult.

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

    int PQgetline(PGconn *conn,
                  문자 *문자열,
                  정수 길이)
    fgets(3)와 마찬가지로 이 루틴은 최대 길이-1 문자까지 복사합니다. 문자열로. 그러나 이는 gets(3)과 유사하지만 개행 문자를 널 문자로 종료합니다. PQgetline은 다음 위치에서 EOF를 반환합니다. EOF, 전체 줄을 읽었으면 0, 버퍼를 읽었으면 1 가득 차 있지만 종료되는 개행 문자는 아직 읽혀지지 않았습니다. 주목하세요 애플리케이션은 새 줄이 두 줄로 구성되어 있는지 확인해야 합니다. 백엔드 서버에 "\." 문자가 있음을 나타냅니다. 복사 명령 결과 전송이 완료되었습니다. 만약 애플리케이션이 length-1보다 큰 행을 수신할 수 있습니다. 문자가 길면 "\"를 인식할 수 있도록 주의가 필요합니다. 줄을 정확하게 입력합니다(예를 들어 줄의 끝을 실수하지 않습니다). 종료자 라인의 경우 긴 데이터 라인). 코드는../src/bin/psql/psql.c다음 루틴을 포함합니다. 복사 프로토콜을 올바르게 처리하십시오.
  • PQgetlineAsync다음을 읽습니다 줄 바꿈으로 끝나는 문자 줄(에 의해 전송됨) 백엔드 서버)를 차단하지 않고 버퍼에 넣습니다.

    int PQgetlineAsync(PGconn *conn,
                       char *버퍼,
                       int bufsize)
    이 루틴은 PQgetline과 유사하지만 다음에서 사용할 수 있습니다. COPY 데이터를 비동기식으로 읽어야 하는 애플리케이션, 즉 차단하지 않고. COPY 스포츠 토토 사이트을 실행하고 PGRES_COPY_OUT 응답, 애플리케이션은 PQconsumeInput을 호출해야 합니다. 데이터 끝 신호가 감지될 때까지 PQgetlineAsync를 수행합니다. 달리 PQgetline, 이 루틴은 감지를 담당합니다. 데이터 끝. 각 호출에서 PQgetlineAsync는 다음과 같은 경우 데이터를 반환합니다. 완전한 개행으로 끝나는 데이터 라인은 libpq에서 사용할 수 있습니다. 입력 버퍼 또는 들어오는 데이터 라인이 너무 길어서 들어갈 수 없는 경우 호출자가 제공한 버퍼입니다. 그렇지 않으면 데이터가 반환되지 않습니다. 나머지 줄이 도착할 때까지. 루틴은 다음과 같은 경우 -1을 반환합니다. 데이터 복사 끝 표시가 인식되었습니다. 데이터가 없으면 0입니다. 사용 가능하거나 데이터 바이트 수를 나타내는 양수 돌아왔다. -1이 반환되면 호출자는 다음에 PQendcopy를 호출해야 합니다. 그런 다음 일반 처리로 돌아갑니다. 반환된 데이터는 개행 문자를 넘어 확장됩니다. 가능하다면 전체 라인이 될 것입니다 한번에 돌아왔습니다. 그러나 호출자가 제공한 버퍼가 백엔드에서 전송한 라인을 담기에는 너무 작고 부분 데이터 라인이 반환됩니다. 이는 여부를 테스트하여 감지할 수 있습니다. 마지막으로 반환된 바이트는 '\n'이거나 아닙니다. 반환된 문자열은 다음과 같습니다. null로 종료됩니다. (종료 null을 추가하려면 다음을 수행하십시오. 실제로 사용 가능한 공간보다 하나 더 작은 크기를 전달합니다.)
  • PQputline널 종료를 보냅니다 백엔드 서버에 스포츠 토토 사이트열을 보냅니다. 정상이면 0을 반환하고, 불가능하면 EOF를 반환합니다. 스포츠 토토 사이트열을 보내세요.

    int PQputline(PGconn *conn,
                  문자 *문자열);
    애플리케이션은 명시적으로 두 스포츠 토토 사이트를 보내야 합니다. "\." 백엔드에 이를 나타내기 위해 마지막 줄에 데이터 전송을 마쳤습니다.
  • PQputnbytes다음을 보냅니다 null로 끝나지 않는 문자열을 백엔드 서버에 보냅니다. 다음과 같은 경우 0을 반환합니다. 좋습니다. 문자열을 보낼 수 없으면 EOF입니다.

    int PQputnbytes(PGconn *conn,
                    const char *버퍼,
                    int nbytes);
    이것은 데이터 버퍼가 전송할 바이트 수가 다음과 같으므로 null로 종료될 필요가 없습니다. 직접 지정합니다.
  • PQendcopy백엔드와 동기화됩니다. 이 함수는 백엔드가 복사를 완료할 때까지 기다립니다. 그것 마지막 문자열이 전송될 때 발행되어야 합니다. PQputline을 사용하거나 마지막 문자열이 PGgetline을 사용하여 백엔드에서 수신되었습니다. 발급받아야 하거나 백엔드가 프런트엔드와 "동기화되지 않을" 수 있습니다. 시 이 함수에서 반환되면 백엔드는 다음을 수신할 준비가 됩니다. 다음 쿼리. 성공적으로 완료되면 반환 값은 0입니다. 그렇지 않으면 0이 아닙니다.

    int PQendcopy(PGconn *conn);

    예를 들면:

    PQexec(conn, "테이블 foo 생성(a int4, b char16, d float8)");
    PQexec(conn, "표준 입력에서 foo 복사");
    PQputline(conn, "3<TAB안녕하세요 세계<TAB4.5\n");
    PQputline(conn,"4<TAB안녕하세요 세상<TAB7.11\n");
    ...
    PQputline(conn,"\\.\n");
    PQendcopy(콘);

PQgetResult를 사용할 때 응용프로그램은 다음에 응답해야 합니다. PQgetline을 반복적으로 실행하여 PGRES_COPY_OUT 결과를 얻었습니다. 종료자 라인이 표시된 후 PQendcopy에 의해. 그러면 그래야 한다 PQgetResult가 NULL을 반환할 때까지 PQgetResult 루프로 돌아갑니다. 마찬가지로 PGRES_COPY_IN 결과는 일련의 프로세스에 의해 처리됩니다. PQputline 호출에 이어 PQendcopy가 호출된 후 다음으로 돌아갑니다. PQgetResult 루프. 이 합의는 사본 또는 일련의 SQL 명령에 포함된 copy out 명령은 올바르게 실행되었습니다. 이전 신청서는 사본을 제출할 가능성이 높습니다. PQexec를 통해 입력하거나 복사하고 트랜잭션이 완료되었다고 가정합니다. PQendcopy 이후. 복사가 들어오고 나가는 경우에만 올바르게 작동합니다. 쿼리 문자열의 유일한 SQL 명령입니다.