COPY — 파일과 테이블 간 데이터 롤 토토
롤 토토테이블_이름[ (컬럼_이름[, ...] ) ] 에서 '파일 이름' | 프로그램 '명령' | 표준 [ [ 와 함께 ] (옵션[, ...] ) ] [ 어디조건] 롤 토토테이블_이름[ (컬럼_이름[, ...] ) ] | (질의) 에게 '파일 이름' | 프로그램 '명령' | 표준 출력 [ [ 와 함께 ] (옵션[, ...] ) ] 어디에서옵션다음 중 하나일 수 있습니다.형식format_name정지 [부울] 구분 기호 'delimiter_character' NULL 'null_string' 기본 'default_string' 헤더 [부울| 성냥 ] 인용하다 'quote_character' 탈출하다 'escape_character' FORCE_QUOTE (컬럼_이름[, ...] ) | * FORCE_NOT_NULL (컬럼_이름[, ...] ) | * FORCE_NULL (열_이름[, ...] ) | * ON_ERRORerror_action거부_LIMIT최대오류인코딩 중 'encoding_name' LOG_VERBOSITY상세함
롤 토토다음 사이에 데이터 이동포스트그레SQL테이블 및 표준 파일 시스템 파일.롤 토토 대상테이블의 내용을 롤 토토합니다에파일, 동안롤 토토본:데이터 롤 토토에서테이블에 파일을 추가합니다(이미 테이블에 있는 모든 항목에 데이터를 추가합니다).롤 토토 대상또한 a의 결과를 롤 토토할 수 있습니다선택질의.
열 목록이 지정되면,롤 토토 대상지정된 열의 데이터만 파일에 롤 토토합니다. 을 위한롤 토토본:, 파일의 각 필드가 지정된 열에 순서대로 삽입됩니다. 에 지정되지 않은 테이블 열다음에서 롤 토토열 목록은 기본값을 받게 됩니다.
롤 토토파일 이름이 있는 명령은포스트그레SQL서버에서 직접 파일을 읽거나 파일에 쓸 수 있습니다. 파일은 다음에서 액세스할 수 있어야 합니다.PostgreSQLuser(서버가 실행되는 사용자 ID) 및 이름은 서버 관점에서 지정되어야 합니다. 언제프로그램이 지정되면 서버는 주어진 명령을 실행하고 프로그램의 표준 출력에서 읽거나 프로그램의 표준 입력에 씁니다. 명령은 서버 관점에서 지정되어야 하며, 다음을 통해 실행 가능해야 합니다.PostgreSQL사용자. 언제STDIN또는STDOUT이 지정되면 클라이언트와 서버 간의 연결을 통해 데이터가 전송됩니다.
각 백엔드 실행 중롤 토토다음에 진행 상황을 보고합니다pg_stat_progress_롤 토토보기. 보다섹션 27.4.3자세한 내용은.
기본적으로,롤 토토처리 중 오류가 발생하면 실패합니다. 전체 파일을 로드하기 위해 최선을 다하는 시도가 필요한 사용 사례의 경우,ON_ERROR절을 사용하여 다른 동작을 지정할 수 있습니다.
테이블_이름기존 테이블의 이름(선택적으로 스키마 한정).
열_이름롤 토토할 열의 선택적 목록입니다. 컬럼 목록을 지정하지 않으면 생성된 컬럼을 제외한 테이블의 모든 컬럼이 롤 토토됩니다.
질의A 선택, 값, 삽입, 업데이트, 삭제또는병합결과를 롤 토토할 명령입니다. 쿼리 주위에는 괄호가 필요합니다.
용삽입, 업데이트, 삭제및병합쿼리 a돌아오는 중절이 제공되어야 하며 대상 관계에는 조건부 규칙이 없어야 합니다.또한규칙도 아니고대신여러 문으로 확장되는 규칙입니다.
파일 이름입력 또는 출력 파일의 경로 이름. 입력 파일 이름은 절대 경로 또는 상대 경로일 수 있지만 출력 파일 이름은 절대 경로여야 합니다. Windows 사용자는 다음을 사용해야 할 수도 있습니다.E''문자열과 경로 이름에 사용된 백슬래시를 두 배로 추가합니다.
프로그램실행할 명령입니다. 안에롤 토토본:, 명령의 표준 출력에서 입력을 읽습니다.롤 토토 대상, 출력은 명령의 표준 입력에 기록됩니다.
명령은 쉘에 의해 호출되므로 신뢰할 수 없는 소스에서 오는 인수를 전달해야 하는 경우 쉘에 특별한 의미가 있을 수 있는 특수 문자를 제거하거나 이스케이프하도록 주의해야 합니다. 보안상의 이유로 고정된 명령 문자열을 사용하거나 최소한 사용자 입력을 포함하지 않는 것이 가장 좋습니다.
STDIN입력이 클라이언트 응용프로그램에서 나오도록 지정합니다.
STDOUT출력이 클라이언트 응용 프로그램으로 이동하도록 지정합니다.
부울선택한 옵션을 켜야 할지 꺼야 할지 지정합니다. 쓸 수 있습니다참, 켜짐또는1옵션을 활성화하고거짓, 꺼짐또는0비활성화합니다. 그만큼부울값을 생략할 수도 있습니다. 이 경우참가정됩니다.
형식읽거나 쓸 데이터 형식을 선택합니다:텍스트, csv(쉼표로 구분된 값) 또는바이너리. 기본값은텍스트. 보다파일 형식자세한 내용은 아래를 참조하세요.
정지실행 후와 마찬가지로 행이 이미 고정된 데이터 롤 토토를 요청합니다.진공 동결명령. 이는 초기 데이터 로드를 위한 성능 옵션으로 사용됩니다. 로드 중인 테이블이 현재 하위 트랜잭션에서 생성되거나 잘린 경우에만 행이 고정되며, 열려 있는 커서가 없고 이 트랜잭션에 보관된 이전 스냅샷이 없습니다. 현재는 다음을 수행할 수 없습니다.롤 토토 정지파티션된 테이블 또는 외부 테이블. 이 옵션은 다음에서만 허용됩니다.롤 토토본.
다른 모든 세션은 데이터가 성공적으로 로드되면 즉시 데이터를 볼 수 있다는 점에 유의하십시오. 이는 MVCC 가시성의 일반적인 규칙을 위반하므로 사용자는 이로 인해 발생할 수 있는 잠재적인 문제를 인지해야 합니다.
DELIMITER파일의 각 행(줄) 내에서 열을 구분하는 문자를 지정합니다. 기본값은 텍스트 형식의 탭 문자, 쉼표입니다.CSV형식. 이는 단일 1바이트 문자여야 합니다. 이 옵션은 다음을 사용할 때 허용되지 않습니다.바이너리형식.
NULL널 값을 나타내는 문자열을 지정합니다. 기본값은\N(백슬래시-N) 텍스트 형식, 따옴표가 없는 빈 문자열CSV형식. null과 빈 문자열을 구별하고 싶지 않은 경우에는 텍스트 형식에서도 빈 문자열을 선호할 수 있습니다. 이 옵션은 다음을 사용할 때 허용되지 않습니다.바이너리형식.
사용 시롤 토토본:, 이 문자열과 일치하는 모든 데이터 항목은 null 값으로 저장되므로 사용한 것과 동일한 문자열을 사용해야 합니다.롤 토토 대상.
기본값기본값을 나타내는 문자열을 지정합니다. 입력 파일에서 문자열이 발견될 때마다 해당 열의 기본값이 사용됩니다. 이 옵션은에서만 허용됩니다.다음에서 롤 토토, 사용하지 않는 경우에만바이너리형식.
헤더파일에 파일의 각 열 이름이 포함된 헤더 줄이 포함되어 있음을 지정합니다. 출력 시 첫 번째 줄에는 테이블의 열 이름이 포함됩니다. 입력 시 이 옵션이로 설정되면 첫 번째 줄이 삭제됩니다.참(또는 이에 상응하는 부울 값). 이 옵션이 로 설정된 경우일치, 헤더 행의 열 번호 및 이름은 테이블의 실제 열 이름과 순서대로 일치해야 합니다. 그렇지 않으면 오류가 발생합니다. 이 옵션은 다음을 사용할 때 허용되지 않습니다.바이너리형식. 그만큼일치옵션은 다음에만 유효합니다.다음에서 롤 토토명령.
인용문데이터 값을 인용할 때 사용할 인용 문자를 지정합니다. 기본값은 큰따옴표입니다. 이는 단일 1바이트 문자여야 합니다. 이 옵션은 다음을 사용할 때만 허용됩니다.CSV형식.
탈출일치하는 데이터 문자 앞에 나타나야 하는 문자를 지정합니다.인용문값. 기본값은와 동일합니다.인용문값(데이터에 나타나는 경우 인용 문자가 두 배가 되도록). 이는 단일 1바이트 문자여야 합니다. 이 옵션은 다음을 사용할 때만 허용됩니다.CSV형식.
FORCE_QUOTE인용이 모든 비-에 사용되도록 강제합니다.NULL지정된 각 열의 값.NULL출력은 인용되지 않습니다. 만약에*지정됨, 비-NULL값은 모든 열에서 인용됩니다. 이 옵션은에서만 허용됩니다.롤 토토 대상, 그리고 사용하는 경우에만CSV형식.
FORCE_NOT_NULL지정된 열의 값을 null 문자열과 일치시키지 않습니다. null 문자열이 비어 있는 기본 경우에는 빈 값이 인용되지 않은 경우에도 null이 아닌 길이가 0인 문자열로 읽혀진다는 의미입니다. 만약에*을 지정하면 해당 옵션이 모든 열에 적용됩니다. 이 옵션은에서만 허용됩니다.다음에서 롤 토토, 그리고 사용하는 경우에만CSV형식.
FORCE_NULL인용된 경우에도 지정된 열의 값을 null 문자열과 일치시키고, 일치하는 항목이 발견되면 값을 다음으로 설정합니다.NULL. null 문자열이 비어 있는 기본 경우에는 따옴표로 묶인 빈 문자열을 NULL로 변환합니다. 만약에*을 지정하면 해당 옵션이 모든 열에 적용됩니다. 이 옵션은에서만 허용됩니다.다음에서 롤 토토, 그리고 사용하는 경우에만CSV형식.
ON_ERROR열의 입력 값을 해당 데이터 유형으로 변환하는 중 오류가 발생할 때의 동작 방법을 지정합니다. 안error_action값중지명령 실패를 의미하고, 반면무시은 입력 행을 버리고 다음 행을 계속한다는 의미입니다. 기본값은중지.
그무시옵션은 다음에만 적용 가능합니다.다음에서 롤 토토때형식is텍스트또는csv.
A 공지무시된 행 수를 포함하는 메시지는 끝에서 방출됩니다.다음에서 롤 토토적어도 하나의 행이 삭제된 경우. 언제LOG_VERBOSITY옵션이 다음으로 설정되었습니다.상세, 아공지입력 파일의 줄과 입력 변환이 실패한 열 이름이 포함된 메시지가 폐기된 각 행에 대해 내보내집니다. 로 설정된 경우침묵, 무시된 행에 관한 메시지가 내보내지지 않습니다.
거부_LIMIT열의 입력 값을 해당 데이터 유형으로 변환하는 동안 허용되는 최대 오류 수를 지정합니다.ON_ERROR다음으로 설정됨무시. 입력으로 인해 지정된 값보다 더 많은 오류가 발생하는 경우,롤 토토다음에도 불구하고 명령이 실패함ON_ERROR다음으로 설정됨무시. 이 절은 다음과 함께 사용해야 합니다.ON_ERROR=무시그리고최대오류양수여야 합니다비긴트. 지정하지 않은 경우,ON_ERROR=무시무제한의 오류를 허용합니다. 즉롤 토토모든 잘못된 데이터를 건너뜁니다.
인코딩파일이 다음 형식으로 인코딩되도록 지정합니다.encoding_name. 이 옵션을 생략하면 현재 클라이언트 인코딩이 사용됩니다. 자세한 내용은 아래 참고사항을 참조하세요.
LOG_VERBOSITY에 의해 방출되는 메시지의 양을 지정합니다.롤 토토명령:기본값, 상세또는침묵. 만약에상세이 지정되면 처리 중에 추가 메시지가 생성됩니다.침묵장황한 메시지와 기본 메시지를 모두 억제합니다.
이것은 현재 다음에서 사용됩니다.다음에서 롤 토토명령할 때ON_ERROR옵션이 다음으로 설정되었습니다.무시.
어디선택사항어디에서절에는 일반적인 형식이 있습니다.
어디조건
어디에서조건다음 유형의 결과로 평가되는 표현식입니다.부울. 이 조건을 만족하지 않는 행은 테이블에 삽입되지 않습니다. 실제 행 값이 변수 참조로 대체될 때 true를 반환하면 행은 조건을 충족합니다.
현재 하위 쿼리는 허용되지 않습니다.어디식이며 평가에는 다음의 변경 사항이 표시되지 않습니다.롤 토토자체(표현식에 호출이 포함된 경우 중요함)휘발성함수).
성공적으로 완료되면, a롤 토토명령은 다음 형식의 명령 태그를 반환합니다.
롤 토토개수
그개수롤 토토된 행 수입니다.
psql명령이 아닌 경우에만 이 명령 태그를 인쇄합니다STDOUT으로 롤 토토...또는 이에 상응하는 것psql메타 명령\...stdout으로 롤 토토. 이는 명령 태그와 방금 인쇄된 데이터의 혼동을 방지하기 위한 것입니다.
롤 토토 대상일반 테이블 및 채워진 구체화된 뷰와 함께 사용할 수 있습니다. 예를 들어,롤 토토다음과 동일한 행을 롤 토토합니다테이블대상으로SELECT * FROM ONLY. 그러나 분할된 테이블, 상속 하위 테이블 또는 뷰와 같은 다른 관계 유형은 직접 지원하지 않습니다. 그러한 관계에서 모든 행을 롤 토토하려면 다음을 사용하십시오.테이블롤 토토(SELECT * FROM.테이블) 받는 사람
다음에서 롤 토토일반, 외부 또는 분할된 테이블이나 다음과 같은 뷰와 함께 사용할 수 있습니다.삽입 대신트리거.
귀하는 값을 읽는 테이블에 대한 선택 권한이 있어야 합니다.롤 토토 대상, 값이 삽입된 테이블에 대한 삽입 권한다음에서 롤 토토. 명령에 나열된 열에 대한 열 권한만 있으면 충분합니다.
테이블에 대해 행 수준 보안이 활성화된 경우 관련선택정책이 적용됩니다롤 토토문장. 현재,테이블받는 사람롤 토토본:행 수준 보안이 적용된 테이블에는 지원되지 않습니다. 동등한 것을 사용하십시오.삽입문 대신.
a에 이름이 지정된 파일롤 토토명령은 클라이언트 응용프로그램이 아닌 서버에서 직접 읽거나 씁니다. 따라서 클라이언트가 아닌 데이터베이스 서버 시스템에 상주하거나 액세스할 수 있어야 합니다. 해당 파일은 다음에서 액세스할 수 있고 읽거나 쓸 수 있어야 합니다.PostgreSQL클라이언트가 아닌 사용자(서버가 실행되는 사용자 ID). 마찬가지로, 다음과 같이 지정된 명령은프로그램클라이언트 응용프로그램이 아닌 서버에서 직접 실행되며 다음에서 실행 가능해야 합니다.PostgreSQL사용자.롤 토토파일 또는 명령 이름 지정은 데이터베이스 수퍼유저 또는 역할 중 하나가 부여된 사용자에게만 허용됩니다.pg_read_server_files, pg_write_server_files, 또는pg_execute_server_program, 서버가 액세스할 수 있는 권한이 있는 파일을 읽거나 쓰거나 프로그램을 실행할 수 있기 때문입니다.
혼란하지 마십시오.롤 토토와 함께psql지시\롤 토토. \롤 토토호출STDIN에서 롤 토토또는STDOUT에 롤 토토, 그런 다음에 액세스할 수 있는 파일에 데이터를 가져오거나 저장합니다.psql클라이언트. 따라서 파일 접근성 및 액세스 권한은 다음과 같은 경우 서버가 아닌 클라이언트에 따라 달라집니다.\롤 토토사용됩니다.
다음에서 사용된 파일 이름을 권장합니다.롤 토토항상 절대 경로로 지정됩니다. 이는 다음과 같은 경우 서버에 의해 시행됩니다.롤 토토 대상하지만다음에서 롤 토토상대 경로로 지정된 파일에서 읽을 수 있는 옵션이 있습니다. 경로는 클라이언트의 작업 디렉터리가 아닌 서버 프로세스의 작업 디렉터리(일반적으로 클러스터의 데이터 디렉터리)를 기준으로 해석됩니다.
다음 명령을 실행하는 중프로그램SELinux와 같은 운영 체제의 액세스 제어 메커니즘에 의해 제한될 수 있습니다.
다음에서 롤 토토모든 트리거를 호출하고 대상 테이블의 제약 조건을 확인합니다. 그러나 규칙은 호출되지 않습니다.
ID 열의 경우,롤 토토본:명령은 항상 입력 데이터에 제공된 열 값을 작성합니다.삽입옵션시스템 값 재정의.
롤 토토입력 및 출력은 다음에 영향을 받습니다.날짜 스타일. 다른 사람에게 이식성을 보장하기 위해포스트그레SQL기본값이 아닌 것을 사용할 수 있는 설치날짜 스타일설정,날짜 스타일다음으로 설정되어야 합니다ISO사용하기 전롤 토토 대상. 다음을 사용하여 데이터를 덤프하지 않는 것도 좋은 생각입니다.간격 스타일다음으로 설정됨sql_standard, 음의 간격 값은 다른 설정을 가진 서버에 의해 잘못 해석될 수 있기 때문입니다.간격 스타일.
입력 데이터는 다음에 따라 해석됩니다.인코딩옵션 또는 현재 클라이언트 인코딩 및 출력 데이터가 인코딩됩니다.인코딩또는 데이터가 클라이언트를 통과하지 않고 서버에서 직접 파일을 읽거나 쓰는 경우에도 현재 클라이언트 인코딩.
그다음에서 롤 토토명령은 진행되면서 입력 행을 테이블에 물리적으로 삽입합니다. 명령이 실패하면 해당 행은 삭제된 상태로 남습니다. 이러한 행은 표시되지 않지만 여전히 디스크 공간을 차지합니다. 대규모 롤 토토 작업에서 오류가 발생한 경우 디스크 공간이 상당히 낭비될 수 있습니다.진공낭비된 공간을 복구하는 데 사용해야 합니다.
FORCE_NULL그리고FORCE_NOT_NULL동일한 열에서 동시에 사용할 수 있습니다. 이로 인해 인용된 Null 문자열은 Null 값으로 변환되고 인용되지 않은 Null 문자열은 빈 문자열로 변환됩니다.
때텍스트형식을 사용하면 읽거나 쓴 데이터는 테이블 행당 한 줄로 구성된 텍스트 파일입니다. 행의 열은 구분 기호로 구분됩니다. 열 값 자체는 각 속성의 데이터 유형에 대해 출력 함수에 의해 생성되거나 입력 함수에 허용되는 문자열입니다. 지정된 null 문자열은 null인 열 대신 사용됩니다.다음에서 롤 토토입력 파일의 한 줄에 예상보다 많거나 적은 열이 포함되어 있으면 오류가 발생합니다.
데이터의 끝은 백슬래시 마침표()만 포함하는 줄로 나타낼 수 있습니다.\.). 파일 끝이 완벽하게 잘 작동하므로 파일에서 읽을 때 데이터 끝 표시가 필요하지 않습니다. 그러한 맥락에서 이 조항은 이전 버전과의 호환성을 위해서만 존재합니다. 하지만,psql사용\.a를 종료하려면STDIN에서 롤 토토작업(즉, 인라인 읽기롤 토토SQL 스크립트의 데이터). 이러한 맥락에서 스크립트가 끝나기 전에 작업을 종료할 수 있도록 하는 규칙이 필요합니다.
백슬래시 문자(\)는에서 사용할 수 있습니다.롤 토토데이터는 행 또는 열 구분 기호로 간주될 수 있는 데이터 문자를 인용합니다. 특히 다음 문자는반드시백슬래시 자체, 개행, 캐리지 리턴 및 현재 구분 기호 문자와 같이 열 값의 일부로 나타나는 경우 백슬래시가 앞에 옵니다.
지정된 null 문자열은 다음에 의해 전송되었습니다.롤 토토 대상백슬래시를 추가하지 않고; 거꾸로,다음에서 롤 토토백슬래시를 제거하기 전에 입력을 null 문자열과 일치시킵니다. 따라서 다음과 같은 null 문자열은\N실제 데이터 값과 혼동할 수 없습니다.\N(다음과 같이 표현됨\\N).
다음 특수 백슬래시 시퀀스는 다음으로 인식됩니다.다음에서 롤 토토:
| 순서 | 대표 |
|---|---|
\b |
백스페이스(ASCII 8) |
\f |
폼 피드(ASCII 12) |
\n |
줄바꿈(ASCII 10) |
\r |
캐리지 리턴(ASCII 13) |
\t |
탭(ASCII 9) |
\v |
세로 탭(ASCII 11) |
\숫자 |
백슬래시 뒤에 1~3개의 8진수가 오면 해당 숫자 코드가 있는 바이트를 지정합니다. |
\x숫자 |
백슬래시x다음에 하나 또는 두 개의 16진수 숫자가 오면 해당 숫자 코드가 있는 바이트를 지정합니다. |
현재,롤 토토 대상8진수 또는 16진수 백슬래시 시퀀스를 생성하지 않지만 해당 제어 문자에 대해 위에 나열된 다른 시퀀스를 사용합니다.
위 표에 언급되지 않은 다른 백슬래시 문자는 그 자체를 나타내는 것으로 간주됩니다. 그러나 불필요하게 백슬래시를 추가하면 데이터 끝 표시()와 일치하는 문자열이 실수로 생성될 수 있으므로 주의하세요.\.) 또는 null 문자열(\N기본적으로). 이러한 문자열은 다른 백슬래시 처리가 완료되기 전에 인식됩니다.
애플리케이션을 생성하는 것이 좋습니다.롤 토토데이터는 데이터 개행 및 캐리지 리턴을 다음으로 변환합니다.\n그리고\r시퀀스 각각. 현재는 백슬래시와 캐리지 리턴으로 데이터 캐리지 리턴을 나타내고, 백슬래시와 뉴라인으로 데이터 줄 바꿈을 나타내는 것이 가능합니다. 그러나 이러한 표현은 향후 릴리스에서 허용되지 않을 수 있습니다. 또한 다음과 같은 경우 부패에 매우 취약합니다.롤 토토파일이 다른 시스템 간에 전송됩니다(예: Unix에서 Windows로 또는 그 반대로).
모든 백슬래시 시퀀스는 인코딩 변환 후에 해석됩니다. 8진수 및 16진수 백슬래시 시퀀스로 지정된 바이트는 데이터베이스 인코딩에서 유효한 문자를 형성해야 합니다.
롤 토토 대상각 행을 Unix 스타일 줄바꿈으로 종료합니다(“\n”). Microsoft Windows에서 실행되는 서버는 대신 캐리지 리턴/줄 바꿈(“\r\n”), 단,롤 토토서버 파일에; 플랫폼 간 일관성을 위해,STDOUT에 롤 토토항상 보냄“\n”서버 플랫폼에 관계없이.다음에서 롤 토토줄바꿈, 캐리지 리턴 또는 캐리지 리턴/줄바꿈으로 끝나는 줄을 처리할 수 있습니다. 백슬래시가 없는 줄바꿈이나 데이터로 간주되는 캐리지 리턴으로 인한 오류 위험을 줄이기 위해,다음에서 롤 토토입력의 줄 끝이 모두 같지 않으면 불평합니다.
이 형식 옵션은 쉼표로 구분된 값을 가져오고 내보내는 데 사용됩니다(CSV) 스프레드시트와 같은 다른 많은 프로그램에서 사용되는 파일 형식입니다. 다음에서 사용하는 이스케이프 규칙 대신PostgreSQL의 표준 텍스트 형식으로, 공통적인 내용을 생성하고 인식합니다.CSV이스케이프 메커니즘.
각 레코드의 값은 다음으로 구분됩니다.DELIMITER문자. 값에 구분 기호 문자가 포함된 경우,인용문문자, 그NULL문자열, 캐리지 리턴 또는 줄 바꿈 문자인 경우 전체 값은 다음과 같이 접두사와 접미사가 붙습니다.인용문문자 및 a 값 내의 모든 항목인용문문자 또는탈출문자 앞에는 이스케이프 문자가 옵니다. 다음을 사용할 수도 있습니다.FORCE_QUOTE비-를 출력할 때 따옴표를 강제 적용합니다.NULL특정 열의 값.
그CSV형식에는 a를 구별하는 표준 방법이 없습니다.NULL빈 문자열의 값.PostgreSQL's롤 토토인용을 통해 이를 처리합니다. 에이NULL다음과 같이 출력됩니다.NULL매개변수 문자열이며 인용되지 않은 반면, 비-NULL값과 일치하는 값NULL매개변수 문자열이 인용되었습니다. 예를 들어 기본 설정에서는 aNULL는 따옴표가 없는 빈 문자열로 기록되고, 빈 문자열 데이터 값은 큰따옴표로 기록됩니다(""). 값을 읽는 것도 비슷한 규칙을 따릅니다. 당신은 사용할 수 있습니다FORCE_NOT_NULL방지하기 위해NULL특정 열에 대한 입력 비교. 다음을 사용할 수도 있습니다.FORCE_NULL따옴표 붙은 null 문자열 데이터 값을 다음으로 변환합니다.NULL.
백슬래시는 특수 문자가 아니기 때문입니다.CSV형식, 텍스트 모드에서 사용되는 데이터 끝 표시자(\.)는 일반적으로 읽을 때 특별하게 취급되지 않습니다.CSV데이터. 예외는 다음과 같습니다.psqla를 종료합니다STDIN에서 롤 토토작업(즉, 인라인 읽기롤 토토SQL 스크립트의 데이터)만 포함하는 줄에\., 텍스트인지 여부CSV모드.
포스트그레SQLv18 이전 버전은 항상 따옴표 없이 인식됩니다.\.별도의 파일에서 읽는 경우에도 데이터 끝 표시로 사용됩니다. 이전 버전과의 호환성을 위해,롤 토토 대상인용하겠습니다\.더 이상 필요하지 않더라도 회선에 혼자 있을 때.
에CSV형식에서는 모든 문자가 중요합니다. 공백이나 이외의 문자로 둘러싸인 따옴표 값DELIMITER, 해당 문자가 포함됩니다. 패드를 사용하는 시스템에서 데이터를 가져오는 경우 오류가 발생할 수 있습니다.CSV공백이 있는 줄은 고정된 너비로 확장됩니다. 그러한 상황이 발생하면 다음을 전처리해야 할 수도 있습니다.CSV데이터를 가져오기 전에 후행 공백을 제거하는 파일포스트그레SQL.
CSV형식은 인식하고 생성합니다CSV캐리지 리턴 및 줄 바꿈이 포함된 따옴표 붙은 값이 있는 파일. 따라서 파일은 텍스트 형식 파일처럼 엄격하게 테이블 행당 한 줄이 아닙니다.
많은 프로그램이 이상하고 때로는 비뚤어진 결과를 낳습니다.CSV파일이므로 파일 형식은 표준이라기보다는 관례에 가깝습니다. 따라서 이 메커니즘을 사용하여 가져올 수 없는 일부 파일이 발생할 수 있으며,롤 토토다른 프로그램이 처리할 수 없는 파일을 생성할 수 있습니다.
그바이너리형식 옵션을 사용하면 모든 데이터를 텍스트가 아닌 바이너리 형식으로 저장/읽을 수 있습니다. 텍스트보다 다소 빠르며CSV형식이지만 바이너리 형식 파일은 기계 아키텍처 전반에 걸쳐 이식성이 떨어집니다.포스트그레SQL버전. 또한 이진 형식은 데이터 유형에 따라 매우 다릅니다. 예를 들어 a에서 바이너리 데이터를 출력하는 것은 작동하지 않습니다.작은int열을 읽어서정수열, 비록 텍스트 형식에서는 잘 작동하지만.
그바이너리파일 형식은 파일 헤더, 행 데이터를 포함하는 0개 이상의 튜플 및 파일 트레일러로 구성됩니다. 헤더와 데이터는 네트워크 바이트 순서로 되어 있습니다.
PostgreSQL7.4 이전 릴리스에서는 다른 바이너리 파일 형식을 사용했습니다.
파일 헤더는 15바이트의 고정 필드와 그 뒤에 가변 길이 헤더 확장 영역으로 구성됩니다. 고정 필드는 다음과 같습니다.
11바이트 시퀀스PGCOPY\n\377\r\n\0— 0바이트는 서명의 필수 부분입니다. (서명은 8비트가 아닌 클린 전송으로 인해 삭제된 파일을 쉽게 식별할 수 있도록 설계되었습니다. 이 서명은 줄 끝 변환 필터, 0바이트 삭제, 상위 비트 삭제 또는 패리티 변경에 의해 변경됩니다.)
32비트 정수 비트 마스크는 파일 형식의 중요한 측면을 나타냅니다. 비트는 0()부터 번호가 매겨집니다.LSB) ~ 31(MSB). 이 필드는 파일 형식에 사용되는 모든 정수 필드와 마찬가지로 네트워크 바이트 순서(가장 중요한 바이트부터)로 저장됩니다. 비트 16-31은 중요한 파일 형식 문제를 나타내기 위해 예약되어 있습니다. 이 범위에 예상치 못한 비트 세트가 발견되면 판독기가 중단되어야 합니다. 비트 0-15는 이전 버전과 호환되는 형식 문제를 알리기 위해 예약되어 있습니다. 판독기는 이 범위에 설정된 예상치 못한 비트를 무시해야 합니다. 현재 하나의 플래그 비트만 정의되어 있으며 나머지는 0이어야 합니다.
1이면 OID가 데이터에 포함됩니다. 0이면 그렇지 않습니다. Oid 시스템 열은 다음에서 지원되지 않습니다.PostgreSQL더 이상은 아니지만 형식에는 여전히 표시기가 포함되어 있습니다.
32비트 정수, 헤더의 나머지 부분 길이(바이트), 자체 제외. 현재 이 값은 0이고 첫 번째 튜플이 바로 뒤에옵니다. 나중에 형식을 변경하면 헤더에 추가 데이터가 표시될 수 있습니다. 독자는 무엇을 해야 할지 모르는 헤더 확장 데이터를 조용히 건너뛰어야 합니다.
헤더 확장 영역은 일련의 자체 식별 청크를 포함하도록 구상됩니다. 플래그 필드는 독자에게 확장 영역에 무엇이 있는지 알려주기 위한 것이 아닙니다. 헤더 확장 내용의 구체적인 디자인은 이후 릴리스에 남아 있습니다.
이 설계는 이전 버전과 호환되는 헤더 추가(헤더 확장 청크 추가 또는 하위 플래그 비트 설정)와 이전 버전과 호환되지 않는 변경(그러한 변경 사항을 알리기 위해 상위 플래그 비트 설정 및 필요한 경우 확장 영역에 지원 데이터 추가)을 모두 허용합니다.
각 튜플은 튜플에 있는 필드 수의 16비트 정수로 시작합니다. (현재 테이블의 모든 튜플은 동일한 개수를 가지지만 항상 그렇지 않을 수도 있습니다.) 그런 다음 튜플의 각 필드에 대해 반복되면 32비트 길이의 단어와 해당 바이트의 필드 데이터가 뒤따릅니다. (길이 단어는 자신을 포함하지 않으며 0일 수 있습니다.) 특별한 경우로 -1은 NULL 필드 값을 나타냅니다. NULL 경우에는 값 바이트가 뒤따르지 않습니다.
필드 사이에 정렬 패딩이나 기타 추가 데이터가 없습니다.
현재 바이너리 형식 파일의 모든 데이터 값은 바이너리 형식(형식 코드 1)으로 가정됩니다. 향후 확장에는 열별 형식 코드를 지정할 수 있는 헤더 필드가 추가될 것으로 예상됩니다.
실제 튜플 데이터에 대한 적절한 바이너리 형식을 결정하려면 다음을 참조해야 합니다.포스트그레SQL소스, 특히*보내기그리고*recv각 열의 데이터 유형에 대한 함수(일반적으로 이러한 함수는src/백엔드/utils/adt/소스 배포판의 디렉터리).
OID가 파일에 포함되어 있으면 OID 필드는 필드 수 단어 바로 뒤에 옵니다. 필드 수에 포함되지 않는다는 점을 제외하면 일반 필드입니다. oid 시스템 열은 현재 버전에서 지원되지 않습니다.PostgreSQL.
파일 트레일러는 -1을 포함하는 16비트 정수 단어로 구성됩니다. 이는 튜플의 필드 개수 단어와 쉽게 구별됩니다.
필드 계산 단어가 -1도 아니고 예상 열 수도 아닌 경우 독자는 오류를 보고해야 합니다. 이는 어떻게든 데이터와 동기화되지 않는 것에 대한 추가 검사를 제공합니다.
다음 예는 수직 막대()를 사용하여 클라이언트에 테이블을 롤 토토합니다.|)을 필드 구분 기호로 사용:
국가를 STDOUT으로 롤 토토(구분자 '|');
파일의 데이터를 다음으로 롤 토토하려면국가테이블:
'/usr1/proj/bray/sql/country_data'에서 국가 롤 토토;
이름이 'A'로 시작하는 국가만 파일에 롤 토토하려면:
롤 토토(선택 * FROM 국가 WHERE country_name LIKE 'A%') TO '/usr1/proj/bray/sql/a_list_countries.copy';
압축 파일로 롤 토토하려면 외부 압축 프로그램을 통해 출력을 파이프할 수 있습니다:
'gzip /usr1/proj/bray/sql/country_data.gz' 프로그램에 국가 롤 토토;
여기에서 테이블로 롤 토토하기에 적합한 데이터 샘플이 있습니다.STDIN:
AF 아프가니스탄 알바니아 DZ 알제리 ZM 잠비아 ZW 짐바브웨
각 줄의 공백은 실제로 탭 문자라는 점에 유의하세요.
다음은 동일한 데이터이며 바이너리 형식으로 출력됩니다. Unix 유틸리티를 통해 필터링한 후 데이터가 표시됩니다.od -c. 테이블에는 세 개의 열이 있습니다. 첫 번째 유형은 다음과 같습니다.문자(2), 두 번째에는 유형이 있습니다.텍스트, 세 번째에는 유형이 있습니다.정수. 모든 행의 세 번째 열에는 null 값이 있습니다.
0000000 P G C O P Y \n 377 \r \n \0 \0 \0 \0 \0 \0 0000020 \0 \0 \0 \0 003 \0 \0 \0 002 A F \0 \0 \0 013 A 0000040 F G H A N I S T A N 377 377 377 377 \0 003 0000060 \0 \0 \0 002 A L \0 \0 \0 007 A L B A N I 0000100A 377 377 377 377 \0 003 \0 \0 \0 002 DZ \0 \0 \0 0000120 007 알제리 I A 377 377 377 377 \0 003 \0 \0 0000140 \0 002 Z M \0 \0 \0 006 Z A M B I A 377 377 0000160 377 377 \0 003 \0 \0 \0 002 Z W \0 \0 \0 \b Z I 0000200 M B A B W E 377 377 377 377 377 377
없습니다롤 토토SQL 표준의 문입니다.
다음 구문은 이전에 사용되었습니다.PostgreSQL버전 9.0이며 계속 지원됩니다.
롤 토토테이블_이름[ (열_이름[, ...] ) ] 에서 '파일 이름' | 표준 [ [ 와 함께 ] [ 바이너리 ] [ 구분 기호 [ AS ] 'delimiter_character' ] [ NULL [ 그대로 ] 'null_string' ] [ CSV [ 헤더 ] [ 견적 [ 그대로 ] 'quote_character' ] [ 탈출 [ AS ] 'escape_character' ] [ 강제는 NULL이 아님열_이름[, ...] ] ] ] 롤 토토테이블_이름[ (열_이름[, ...] ) ] | (질의) 에게 '파일 이름' | 표준 출력 [ [ 와 함께 ] [ 바이너리 ] [ 구분 기호 [ AS ] 'delimiter_character' ] [ NULL [ 그대로 ] 'null_string' ] [ CSV [ 헤더 ] [ 견적 [ 그대로 ] 'quote_character' ] [ 탈출 [ AS ] 'escape_character' ] [ 강제 인용문열_이름[, ...] | * } ] ] ]
이 구문에서 참고하세요.바이너리그리고CSVa의 인수가 아닌 독립적인 키워드로 처리됩니다.형식옵션.
다음 구문은 이전에 사용되었습니다.PostgreSQL버전 7.3이며 계속 지원됩니다.
롤 토토 [ 바이너리 ]테이블_이름발신: '파일 이름' | 표준 [ [사용] 구분 기호 'delimiter_character' ] [ NULL로 'null_string' ] 롤 토토 [ 바이너리 ]테이블_이름대상으로 '파일 이름' | 표준 출력 [ [사용] 구분 기호 'delimiter_character' ] [ NULL로 'null_string' ]
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다. 특정 기능에 대한 경험이 있거나 추가 설명이 필요한 경우 이용해주세요이 양식문서 문제를 보고합니다.