지원 버전 :현재(17) /16 / 15 / 14 / 13
개발 버전 :18 / Devel
지원되지 않는 버전 :12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
이 문서는 지원되지 않는 버전의 사설 토토을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

사설 토토

이름

복사-파일간에 데이터를 복사합니다 테이블

시놉시스

복사 [BANIAR]테이블[OIDS와 함께]
    에서  'filename' |Stdin[[사용] Delimiters 'Delimiter' ]]
    [NULL으로 'NULL String' ]]
복사 [binary]테이블[OIDS와 함께]
    에게  'filename' |stdout[[사용] Delimiters 'Delimiter' ]]
    [NULL으로 'null 문자열' ]

입력

binary

필드 형식의 동작을 변경하여 모든 것을 강요합니다 데이터가 아닌 이진 형식으로 저장하거나 읽을 데이터 텍스트. 구분자와 널 옵션이있는 것은 관련이 없습니다 이진 형식의 경우

테이블

기존 테이블의 이름.

OIDS와 함께

​​내부 오브젝트 ID (OID) 복사를 지정합니다 각 행.

filename

입력 또는 출력의 절대 유닉스 경로 이름 파일.

Stdin

입력이 클라이언트에서 제공되는 것을 지정합니다 애플리케이션.

stdout

출력이 클라이언트로 이동하는 것을 지정합니다 애플리케이션.

Delimiter

각 행 내 필드를 분리하는 문자 파일의 (줄).

NULL String

널 값을 나타내는 문자열. 기본값 이다"\ n"(backslash-n). 당신은 선호 할 수 있습니다 예를 들어 빈 문자열.

참고 :사본에 데이터 항목이 있습니다 일치하는이 문자열은 널 값으로 저장됩니다. 따라서 동일한 문자열을 사용해야합니다. 복사에 사용했던대로.

출력

사설 토토

사본이 성공적으로 완료되었습니다.

오류 :이유

오류에 명시된 이유로 사본이 실패했습니다. 메시지.

설명

사설 토토간에 데이터 이동사설 토토표 및 표준 파일 시스템 파일.복사전체 내용을 복사합니다 파일에 테이블의복사파일에서 테이블로 데이터를 복사합니다 (데이터가 추가 이미 테이블에 무엇이든지).

사설 토토파일 이름으로 지시사설 토토직접 백엔드 파일에서 읽거나 쓰십시오. 파일에 액세스 할 수 있어야합니다 백엔드와 이름은 백엔드. 언제Stdin또는stdout지정되고 데이터가 흐릅니다 백엔드에 클라이언트 프론트 엔드.

팁 :혼동하지 마십시오사설 토토withPSQL교육\ 사설 토토. \ 사설 토토호출stdin에서 복사또는stdout에 복사, 그런 다음 가져 오기/저장합니다 에 액세스 할 수있는 파일의 데이터PSQL클라이언트. 따라서 파일 접근성 접근 권한은 백엔드시기\ 사설 토토사용됩니다.

노트

사설 토토평원과 함께 만 사용할 수 있습니다 보기가 아닌 테이블.

이진 키워드는 모든 데이터가 저장/읽기를 강요합니다. 텍스트가 아닌 이진 형식. 그것은 다소 빠릅니다 일반 복사 명령이지만 이진 사본 파일은 휴대용이 아닙니다. 기계 아키텍처를 가로 질러.

기본적으로 텍스트 사본은 탭 ( "\ t") 문자를 필드 사이의 구분 기. 필드 구분 기호가 변경 될 수 있습니다 키워드 문구가있는 다른 단일 문자 구분자. 일치하는 데이터 필드의 문자 Delimiter 캐릭터는 Backslash가 인용됩니다.

당신은 있어야합니다액세스 선택값을 읽는 테이블사설 토토및 어느 하나삽입또는액세스 업데이트값이있는 테이블에 삽입사설 토토. 백엔드도 읽거나 쓰여진 파일에 대해 적절한 Unix 권한이 필요합니다. 에 의해사설 토토.

복사규칙을 호출하지도 않습니다 열 기본값에 따라 행동합니다. 트리거를 호출하고 확인합니다 제약 조건.

사설 토토첫 번째 작업을 중지합니다 오류. 이것은 A의 경우 문제를 일으키지 않아야합니다.사설 토토, 그러나 대상 관계는 이미 A에서 이전 행을 받았습니다복사 에게. 이 행은 보이거나 접근 할 수 없지만 여전히 디스크 공간을 차지합니다. 이것은 상당한 금액 일 수 있습니다 실패가 잘 발생하면 낭비되는 디스크 공간의 양 큰 사본 작동. 당신은 호출하고 싶을 수도 있습니다진공낭비되는 공간을 회수하려면

a에 명명 된 파일사설 토토명령은입니다 클라이언트가 아닌 백엔드에 의해 직접 읽거나 작성 애플리케이션. 그러므로 그들은 상주하거나 접근 할 수 있어야합니다 클라이언트가 아닌 데이터베이스 서버 시스템. 그들은해야합니다 액세스 가능하고 읽을 수 있거나 쓸 수 있습니다.사설 토토사용자 (사용자 ID 서버 클라이언트가 아닌 AS)로 실행됩니다.사설 토토이름 지정 a 파일은 데이터베이스 슈퍼 사용자에게만 허용됩니다. 백엔드에 특권이있는 파일을 읽거나 쓰십시오. 입장.

팁 :thePSQL교육\ 사설 토토읽거나 쓰는 것 클라이언트의 권한이있는 클라이언트 시스템의 파일 따라서 슈퍼 유행자에게는 제한되지 않습니다.

에 사용 된 파일 이름이 권장됩니다사설 토토항상 절대 경로로 지정됩니다. 이것은의 경우 백엔드에 의해 시행됩니다.복사하지만사설 토토 From당신은 상대 경로. 경로는 백엔드의 작업 디렉토리 (아래 어딘가$ pgdata), 고객의 일이 아니라 예배 규칙서.

파일 형식

텍스트 형식

언제사설 토토이진없이 사용됩니다 옵션, 읽기 또는 작성된 파일은 한 줄이있는 텍스트 파일입니다. 테이블 행 당. 연속의 열 (속성)은 분리됩니다 구분자 문자. 속성 값 자체는입니다 출력 함수에 의해 생성 된 문자열 또는 각 속성의 데이터 유형의 입력 함수. 지정된 Null-Value String은 속성 대신에 사용됩니다. 널.

OID가 지정된 경우 OID가 읽거나 작성됩니다. 사용자 데이터 열에 앞서 첫 번째 열. (오류입니다 OIDS를 사용하여 가지고 있지 않은 테이블에 지정된 경우 제기 oids.)

데이터 종료는 한 줄로 표시 될 수 있습니다. 그냥 뒤 슬래시-기간 (\.). an Unix에서 읽을 때 데이터 종료 마커가 필요하지 않습니다. 파일 끝이 완벽하게 잘 작동하기 때문에 파일. 그러나 끝 데이터를 클라이언트에 또는 클라이언트로 복사 할 때 마커가 제공되어야합니다. 애플리케이션.

백 슬래시 문자 (\) 될 수 있습니다 에서 사용사설 토토데이터를 인용 할 데이터 그렇지 않으면 행 또는 열로 찍을 수있는 문자 구분자. 특히 다음 문자필수앞에 a 속성 값의 일부로 나타나면 BacksLash : Backslash 자체, Newline 및 현재 구분 기호 성격.

다음 특수 백 슬래시 시퀀스는에 의해 인식됩니다.사설 토토 from:

시퀀스 대표
\ b 백 스페이스 (ASCII 8)
\ f 양식 피드 (ASCII 12)
\ n Newline (ASCII 10)
\ r 캐리지 리턴 (ASCII 13)
\ t 탭 (ASCII 9)
\ V 수직 탭 (ASCII 11)
\Digits 백 슬래시 뒤에 1 ~ 3 개의 옥탈 숫자가 이어집니다 해당 숫자 코드로 문자를 지정
현재,복사결코 방출되지 않습니다 옥탈 자리 백 슬래시 시퀀스이지만 다른 사람을 사용합니다. 해당 제어 문자에 대해 위에 나열된 시퀀스.

데이터 문자 앞에 백 슬래시를 넣지 마십시오n또는 기간 (.). 그런 쌍은 기본 널 문자열 또는 데이터 종료 마커. 다른 백 슬래시 위의 표에서 언급되지 않은 캐릭터는 다음과 같습니다. 스스로를 대표하기 위해 가져 갔다.

응용 프로그램에서 사본을 생성하는 것이 좋습니다 데이터 변환 데이터 Newlines 및 Carriage Returns reto\ nand\ r각각 시퀀스. 현재 (사설 토토7.2 및 이전 버전)입니다 데이터 캐리지 리턴을 나타낼 수 있습니다 특별 인용 및 백 슬래시로 데이터를 나타 내기 위해 그리고 Newline. 그러나 이러한 표현은 그렇지 않습니다 향후 릴리스에서 기본적으로 허용됩니다.

각 행의 끝은 유닉스 스타일로 표시됩니다. Newline ( "\ n"). 현재,사설 토토 FromDOS-를 포함하는 파일이 주어지면 원하는대로 작동하지 않습니다. 맥 스타일의 신약. 이것은 미래에 변화 할 것으로 예상됩니다 릴리스.

이진 형식

BINAGE 사설 토토변경 사항사설 토토V7.1. 새 형식은 파일 헤더, 0 이상의 튜플로 구성됩니다. 그리고 파일 트레일러.

파일 헤더

파일 헤더는 24 바이트의 고정 필드로 구성됩니다. 가변 길이 헤더 확장 영역이 뒤 따릅니다. 그만큼 고정 된 필드는 다음과 같습니다.

서명

12 바이트 시퀀스pgb사설 토토 \ n \ 377 \ r \ n \ 0--- NULL은 서명의 필수 부분입니다. (그만큼 서명은 쉽게 식별 할 수 있도록 설계되었습니다 8 비트 클리어에 의해 결정된 파일 옮기다. 이 서명은 변경됩니다 Newline-Translation Filters, Nulls를 떨어 뜨리고 떨어졌습니다 높은 비트 또는 패리티 변경.)

정수 레이아웃 필드

int32 소스의 바이트 순서에서 상수 0x01020304. 잠재적으로 독자는 바이트 플라이핑에 참여할 수 있습니다 후속 필드 잘못된 바이트 순서가 감지 된 경우 여기.

플래그 필드

int32 비트 마스크의 중요한 측면을 나타냅니다 파일 형식. 비트는 0 (LSB)에서 31 (MSB)에서 번호가 매겨집니다. ---이 필드는 소스와 함께 저장됩니다 모든 이후의 정수 필드와 마찬가지로 엔디 니스. 비트 16-31은 임계 파일 형식을 표시하도록 예약되어 있습니다 문제; 독자가 예상치 못한 것을 발견하면 중단해야합니다 이 범위에서 비트 설정. 비트 0-15는 신호로 예약되어 있습니다 후진 호환 형식 문제; 독자가해야합니다 이 범위에 설정된 예기치 않은 비트를 무시하십시오. 현재 하나의 플래그 비트 만 정의되고 나머지는 0이어야합니다 :

비트 16

1 인 경우 OID가 덤프에 포함됩니다. 0, 아니다

헤더 확장 영역 길이

int32 나머지 헤더의 바이트의 길이는 아닙니다 자기 포함. 초기 버전에서는 이것이 될 것입니다 0, 첫 번째 튜플은 즉시 따릅니다. 미래 형식으로 변경하면 추가 데이터가 헤더에 존재합니다. 독자는 조용히 건너 뛰어야합니다 모든 헤더 확장 데이터를 통해 무엇을 .

헤더 확장 영역은 a를 포함하도록 구상되었습니다 자기 식별 청크 순서. 플래그 필드는 아닙니다 독자들에게 확장 영역에 무엇이 있는지 알리기위한 것입니다. 헤더 확장 내용의 특정 설계는 나중에 릴리스.

이 디자인은 뒤로 호환 헤더를 모두 허용합니다 추가 (헤더 확장 청크 추가 또는 저음 플래그를 설정하십시오 비트) 및 비 백워드 호환 변경 (고차 설정 이러한 변경 사항을 알리기 위해 비트를 플래그하고 지원 데이터를 추가합니다. 필요한 경우 확장 영역).

튜플

각 튜플은 int16 수에서 시작합니다. 튜플의 들판. (현재, 테이블에있는 모든 튜플이 있습니다 똑같은 수를 가지고 있지만 항상 사실이 아닐 수도 있습니다.) 그런 다음 튜플의 각 필드마다 반복되면 Int16이 있습니다. typlen 단어에 이어 필드 데이터가 이어질 수 있습니다. Typlen 필드 따라서 해석됩니다 :

ZERO

필드는 null입니다. 데이터는 따르는 데 없습니다.

0

필드는 고정 길이 데이터 유형입니다. 정확히 n 바이트 데이터의 typlen 단어를 따릅니다.

-1

필드는 Varlena 데이터 유형입니다. 다음 4 바이트 총 값을 포함하는 Varlena 헤더입니다 자신을 포함한 길이.

<-1

향후 사용을 위해 예약.

비 널 필드의 경우 독자는 typlen을 확인할 수 있습니다. 대상 열에 예상되는 typlen과 일치합니다. 이것 데이터가 예상되는.

정렬 패딩 또는 기타 추가 데이터가 없습니다. 필드 사이. 또한 형식은 그렇지 않습니다 데이터 유형이 회의 별 회의인지 여부를 구별합니다 통과 값. 이 두 조항 모두 의도적입니다 파일의 이식성을 향상시키는 데 도움이 될 수 있습니다 (비록 코스 엔지니어 및 플로팅 포인트 형식 문제는 여전히 가능합니다 이진 파일을 기계를 가로 질러 이동하지 못하도록하십시오).

OID가 덤프에 포함 된 경우 OID 필드 즉시 필드 카운트 단어를 따릅니다. 그것은 정상입니다 필드 카운트에 포함되지 않는 것을 제외하고 필드. ~ 안에 특히 typlen이 있습니다 --- 이것은 처리 할 수 ​​있습니다. 4 바이트 vs 8 바이트 OID가 너무 많은 고통없이 바람직하다는 것이 널로 표시되는 OID.

파일 트레일러

파일 트레일러는 -1을 포함하는 int16 단어로 구성됩니다. 이것은 튜플의 필드 카운트와 쉽게 구별됩니다 단어.

필드 카운트 단어가있는 경우 리더는 오류를보고해야합니다. -1 또는 예상 열의 수가 없습니다. 이것은 제공합니다 어떻게 든 데이터.

usage

다음 예제는 표준 출력으로 테이블을 복사합니다. 필드 구분 기호로서 수직 막대 (|) :

국가 복사StdoutDelimiters 사용 | ';

UNIX 파일에서 데이터를 테이블 국가로 복사하려면 :

'/usr1/proj/bray/sql/country_data';에서 컨트리를 복사합니다.

테이블에 복사하는 데 적합한 데이터 샘플이 있습니다. 에서Stdin(따라서 종료가 있습니다 마지막 줄의 시퀀스) :

AF 아프가니스탄
알 알바니아
DZ 알제리
ZM 잠비아
ZW 짐바브웨
\.

각 라인의 공백은 실제로 탭입니다.

다음은 동일한 데이터이며, 이진 형식의 출력은 Linux/i586 기계. 데이터를 필터링 한 후에 데이터가 표시됩니다 유닉스 유틸리티OD -C. 테이블에는 세 가지가 있습니다 전지; 첫 번째는char (2), 두 번째는텍스트, 세 번째는Integer. 모든 행은 세 번째로 널 값을 갖습니다. 필드.

0000000 p g b c o p y \ n 377 \ r \ n \ 0 004 003 002 001
0000020 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0 003 \ 0 377 377 006 \ 0 \ 0 \ 0
0000040 A F 377 377 017 \ 0 \ 0 \ 0 A F G H A N I S
0000060 T A N \ 0 \ 0 003 \ 0 377 377 006 \ 0 \ 0 \ 0 A L 377
0000100 377 \ V \ 0 \ 0 \ 0 A L B A N I A \ 0 \ 0 003 \ 0
0000120 377 377 006 \ 0 \ 0 \ 0 D Z 377 377 \ V \ 0 \ 0 \ 0 a l
0000140 g e r i a \ 0 \ 0 003 \ 0 377 377 006 \ 0 \ 0 \ 0 Z
0000160 M 377 377 \ n \ 0 \ 0 \ 0 Z A M B I A \ 0 \ 0 003
0000200 \ 0 377 377 006 \ 0 \ 0 \ 0 Z W 377 377 \ f \ 0 \ 0 \ 0 Z
0000220 I M B A B W E \ 0 \ 0 377 377

호환성

SQL92

없음사설 토토진술 SQL92.