이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
다음에 대한 동일한 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : F.15. file_fdw - 서버 파일 시스템의 토토 커뮤니티 파일에 액세스버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

F.13. 파일_fdw

file_fdw모듈은 외부 데이터 래퍼를 제공합니다file_fdw, 서버의 파일 시스템에 있는 데이터 파일에 액세스하는 데 사용할 수 있습니다. 데이터 파일은 읽을 수 있는 형식이어야 합니다.다음에서 복사; 참조PostgreSQL : 문서 : 9.5 : 스포츠 토토 베트맨8833_8898

이 래퍼를 사용하여 생성된 외부 테이블에는 다음 옵션이 있을 수 있습니다:

파일 이름

읽을 파일을 지정합니다. 필수의. 상대 경로는 데이터 디렉터리를 기준으로 합니다.

형식

파일 형식을 지정합니다. 다음과 같습니다.복사형식옵션.

헤더

파일에 다음과 같은 헤더 라인이 있는지 여부를 지정합니다.복사헤더옵션.

구분자

다음과 동일하게 파일의 구분 문자를 지정합니다.복사DELIMITER옵션.

인용문

다음과 동일하게 파일의 인용 문자를 지정합니다.복사인용문옵션.

탈출

다음과 동일하게 파일의 이스케이프 문자를 지정합니다.복사's탈출옵션.

다음과 동일하게 파일의 널 문자열을 지정합니다.복사'sNULL옵션.

인코딩

파일의 인코딩을 지정합니다. 다음과 같습니다.복사's인코딩옵션.

그동안 참고하세요복사OIDS 및 HEADER와 같은 옵션을 해당 값 없이 지정할 수 있으며, 외부 데이터 래퍼 구문에서는 모든 경우에 값이 있어야 합니다. 활성화하려면복사옵션은 일반적으로 값 없이 제공되지만 대신 TRUE 값을 전달할 수 있습니다.

이 래퍼를 사용하여 생성된 외부 테이블의 열에는 다음 옵션이 있을 수 있습니다:

force_not_null

이것은 부울 옵션입니다. true인 경우 열의 값이 null 문자열(즉, 파일 수준과 일치하지 않아야 함을 지정합니다.옵션). 이는 열을 나열하는 것과 동일한 효과를 갖습니다.복사'sFORCE_NOT_NULL옵션.

force_null

이것은 불리언 옵션입니다. true인 경우 null 문자열과 일치하는 열의 값이 다음과 같이 반환되도록 지정합니다.NULL값이 인용된 경우에도 마찬가지입니다. 이 옵션이 없으면 null 문자열과 일치하는 따옴표가 없는 값만 다음과 같이 반환됩니다.NULL. 이는 열을 나열하는 것과 동일한 효과를 갖습니다.복사'sFORCE_NULL옵션.

복사'sOIDS그리고FORCE_QUOTE옵션은 현재 지원되지 않습니다.file_fdw.

이 옵션은 외부 테이블이나 해당 열에 대해서만 지정할 수 있으며 해당 옵션에는 지정할 수 없습니다.file_fdw외부 데이터 래퍼, 서버 옵션 또는 래퍼를 사용한 사용자 매핑에도 없습니다.

테이블 수준 옵션을 변경하려면 보안상의 이유로 슈퍼유저 권한이 필요합니다. 슈퍼유저만이 어떤 파일을 읽을지 결정할 수 있어야 합니다. 원칙적으로 슈퍼유저가 아닌 사용자는 다른 옵션을 변경할 수 있지만 현재는 지원되지 않습니다.

다음을 사용하는 외부 테이블의 경우file_fdw, 설명읽을 파일의 이름을 표시합니다. 그렇지 않은 경우비용 할인이 지정되면 파일 크기(바이트)도 표시됩니다.

예 F-1. 토토 사이트 CSV 로그용 외부 테이블 생성

명확한 용도 중 하나file_fdwPostgreSQL 활동 로그를 쿼리용 테이블로 사용할 수 있도록 만드는 것입니다. 이렇게 하려면 먼저 다음과 같아야 합니다.CSV 파일에 로깅 중,여기에서는 이를 호출하겠습니다pglog.csv. 먼저 설치하세요.file_fdw확장으로:

확장 파일 생성_fdw;

그런 다음 외부 서버를 생성하십시오:

서버 pglog 외부 데이터 래퍼 파일 생성_fdw;

이제 외부 데이터 테이블을 생성할 준비가 되었습니다. 를 사용하여외부 테이블 생성명령을 실행하려면 테이블의 열, CSV 파일 이름 및 형식을 정의해야 합니다.

외부 테이블 생성 pglog(
  시간대가 있는 log_time 타임스탬프(3),
  user_name 텍스트,
  데이터베이스_이름 텍스트,
  process_id 정수,
  연결_텍스트에서,
  session_id 텍스트,
  session_line_num bigint,
  command_tag 텍스트,
  session_start_time 시간대가 포함된 타임스탬프,
  virtual_transaction_id 텍스트,
  transaction_id bigint,
  오류_심각도 텍스트,
  sql_state_code 텍스트,
  메시지 텍스트,
  세부 텍스트,
  힌트 텍스트,
  내부 쿼리 텍스트,
  Internal_query_pos 정수,
  컨텍스트 텍스트,
  쿼리 텍스트,
  query_pos 정수,
  위치 텍스트,
  애플리케이션_이름 텍스트
) 서버 pglog
OPTIONS(파일 이름 '/home/josh/9.1/data/pg_log/pglog.csv', 형식 'csv' );

그렇습니다. 이제 로그를 직접 쿼리할 수 있습니다. 물론 프로덕션에서는 로그 회전을 처리하는 방법을 정의해야 합니다.