| 포스트그레SQL | ||
|---|---|---|
| 이전 | 44장. libpq | 다음 |
Postgres의 복사 명령에는 읽거나 쓸 수 있는 옵션이 있습니다 다음에서 사용하는 네트워크 연결로libpq. 따라서 이 네트워크에 액세스하려면 기능이 필요합니다. 애플리케이션이 이를 최대한 활용할 수 있도록 직접 연결 능력.
PQgetline개행으로 끝나는 문자를 읽습니다. 백엔드 서버에 의해 전송된 문자 라인을 크기 길이의 버퍼 문자열입니다. fgets(3)와 마찬가지로 이 루틴은 최대 length-1 문자를 문자열에 복사합니다. 그것은 같다 그러나 gets(3)은 종료 개행 문자를 변환한다는 점에서 널 문자로 변환합니다. PQgetline은 EOF에서 EOF를 반환합니다. 전체 라인을 읽었으며, 버퍼가 가득 차 있지만 개행 종료는 아직 읽혀지지 않았습니다. 주의할 점은 애플리케이션은 새 줄이 다음으로 구성되어 있는지 확인해야 합니다. 백엔드 서버를 나타내는 단일 문자 "." 복사 명령 결과 전송이 완료되었습니다. 따라서 애플리케이션이 회선을 수신할 것으로 예상되는 경우 길이가 1자보다 긴 경우 애플리케이션은 PQgetline의 반환 값을 매우 확인해야 합니다. 조심스럽게. 코드는../src/bin/psql/psql.c다음 루틴이 포함되어 있습니다. 복사 프로토콜을 올바르게 처리하십시오.
int PQgetline(PGconn *conn,
문자 *문자열,
정수 길이)
PQputline널 종료를 보냅니다. 백엔드 서버에 문자열을 보냅니다. 애플리케이션은 명시적으로 단일 문자 "."를 보냅니다. 백엔드에 이를 나타내기 위해 데이터 전송이 완료되었습니다.
void PQputline(PGconn *conn,
문자 *문자열);
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(콘);
| 이전 | 집 | 다음 |
| 비동기 알림 | 위로 | libpq 추적 기능 |