이 문서는 지원되지 않는 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이 반환되면 호출자는 다음에 PQend토토 꽁 머니를 호출해야 합니다. 그런 다음 일반 처리로 돌아갑니다. 반환된 데이터는 개행 문자를 넘어 확장됩니다. 가능하다면 전체 라인이 될 것입니다 한번에 돌아왔습니다. 그러나 호출자가 제공한 버퍼가 백엔드에서 전송한 라인을 담기에는 너무 작고 부분 데이터 라인이 반환됩니다. 이는 여부를 테스트하여 감지할 수 있습니다. 마지막으로 반환된 바이트는 '\n'이거나 아닙니다. 반환된 문자열은 다음과 같습니다. null로 종료됩니다. (종료 null을 추가하려면 다음을 수행하십시오. 실제로 사용 가능한 공간보다 하나 더 작은 크기를 전달합니다.)
  • PQputline널 종료를 보냅니다 백엔드 서버에 문자열을 보냅니다. 정상이면 0을 반환하고, 불가능하면 EOF를 반환합니다. 문자열을 보냅니다.

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

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

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

    예를 들면:

    PQexec(conn, "테이블 foo 생성(a int4, b char(16), d float8)");
    PQexec(conn, "표준 입력에서 foo 복사");
    PQputline(conn, "3\thello world\t4.5\n");
    PQputline(conn,"4\t안녕하세요 세상\t7.11\n");
    ...
    PQputline(conn,"\\.\n");
    PQend토토 꽁 머니(콘);

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