토토테이블[(열[, ...])] 에서 'filename' |Stdin[ [ 와 함께 ] [바이너리] [OIDS] [Delimiter [as] 'Delimiter' ]] [null [as] 'null 문자열' ]]]] 복사테이블[(열[, ...])] 에게 'filename' |stdout[ [ 와 함께 ] [바이너리] [OIDS] [Delimiter [as] 'Delimiter' ]] [null [as] 'null String' ]]
기존의 이름 (schema-qualified) 테이블.
복사 할 열의 선택적 목록. 열이없는 경우 목록이 지정되고 모든 열이 사용됩니다.
입력 또는 출력의 절대 유닉스 경로 이름 파일.
입력이 클라이언트에서 제공되는 것을 지정합니다 애플리케이션.
출력이 클라이언트로 이동하는 것을 지정합니다 애플리케이션.
필드 형식의 동작을 변경하여 모든 것을 강요합니다
데이터가 아닌 이진 형식으로 저장하거나 읽을 데이터
텍스트. 지정할 수 없습니다Delimiter
또는NULL
이진 모드에서.
내부 오브젝트 ID (OID) 복사를 지정합니다 각 행.
각각 내에서 필드를 분리하는 단일 문자 파일의 행 (줄).
널 값을 나타내는 문자열. 기본값 이다"\ n"(backslash-n). 당신은 선호 할 수 있습니다 예를 들어 빈 문자열.
참고 :사본에 데이터 항목이 있습니다 일치하는이 문자열은 널 값으로 저장됩니다. 따라서 동일한 문자열을 사용해야합니다. 복사에 사용했던대로.
토토간에 데이터 이동PostgreSQL표 및 표준 파일 시스템 파일.복사a의 내용을 복사합니다 테이블to파일, while토토데이터 사본From테이블에 파일 (추가 이미 테이블에있는 모든 것에 대한 데이터).
열 목록이 지정된 경우토토지정된 데이터 만 복사합니다 파일에 대한 열. 에 열이있는 경우 열 목록에없는 테이블복사 에서해당 열의 기본값을 삽입합니다.
토토파일 이름으로 지시PostgreSQL직접 백엔드 파일에서 읽거나 쓰십시오. 파일에 액세스 할 수 있어야합니다 백엔드와 이름은 백엔드. 언제Stdin또는stdout지정되어 있으며 데이터가 흐릅니다 백엔드에 클라이언트 프론트 엔드.
팁 :혼동하지 마십시오토토withPSQL교육\ 토토. \ 토토호출15513_15536또는stdout에 복사및 그런 다음 데이터를 가져 오거나 저장하여에 액세스 할 수있는 파일에 저장합니다.PSQL클라이언트. 따라서 파일 접근성 및 액세스 권한은 클라이언트에 따라 다릅니다 백엔드보다\ 토토is 사용된.
토토평원과 함께 만 사용할 수 있습니다 보기가 아닌 테이블.
이진 키워드는 모든 데이터가 저장/읽기를 강요합니다. 텍스트가 아닌 이진 형식. 그것은 다소 빠릅니다 일반 복사 명령이지만 이진 사본 파일은 휴대용이 아닙니다. 기계 아키텍처를 가로 질러.
기본적으로 텍스트 사본은 탭 ( "\ t") 문자를
필드 사이의 구분 기. 필드 구분 기호가 변경 될 수 있습니다
키워드가있는 다른 단일 문자Delimiter
. 데이터 필드의 문자
Delimiter 캐릭터와 일치하는 것은 백 슬래시가됩니다
인용.
당신은 있어야합니다특권 선택on 값을 읽는 모든 테이블복사 에게및권한 삽입a 값을 삽입하는 테이블복사. 백엔드도 적절해야합니다 읽거나 쓴 파일에 대한 UNIX 권한토토.
토토 FROM트리거를 호출합니다 대상 테이블의 제약 조건을 확인하십시오. 그러나, 그것은 규칙을 호출하지 않습니다.
토토첫 번째 작업을 중지합니다 오류. 이것은 A의 경우 문제를 일으키지 않아야합니다.복사, 그러나 대상 관계는 이미 A에서 이전 행을 받았습니다복사. 이 행은 보이지 않습니다 접근 가능하지만 여전히 디스크 공간을 차지합니다. 이 금액은 할 수 있습니다 고장이 발생하면 상당한 양의 낭비 된 디스크 공간에 큰 사본 작업으로 잘 발생했습니다. 당신은 원할 수도 있습니다 부르다진공낭비를 회복하려면 공간.
a에 이름이 지정된 파일토토명령은입니다 클라이언트가 아닌 백엔드에 의해 직접 읽거나 작성 애플리케이션. 그러므로 그들은 상주하거나 접근 할 수 있어야합니다 클라이언트가 아닌 데이터베이스 서버 시스템. 그들은해야합니다 액세스 가능하고 읽을 수 있거나 쓸 수 있습니다.PostgreSQL사용자 (사용자 ID 서버 클라이언트가 아닌 AS)로 실행됩니다.토토이름 지정 파일은 데이터베이스 슈퍼 사용자에게만 허용됩니다. 백엔드에 특권이있는 파일을 읽거나 쓰십시오. 입장.
팁 :thePSQL교육\ 토토읽거나 쓰는 것 클라이언트의 권한이있는 클라이언트 시스템의 파일 따라서 슈퍼 유행자에게는 제한되지 않습니다.
사용 된 파일 이름이 권장됩니다.토토항상 절대 경로로 지정됩니다. 이것은의 경우 백엔드에 의해 시행됩니다.복사하지만복사 에서파일에서 읽을 수있는 옵션이 있습니다. 상대 경로에 의해 지정됩니다. 경로는 해석 될 것입니다 백엔드의 작업 디렉토리와 관련하여 (아래 어딘가$ pgdata), 클라이언트의 작업이 아닙니다 예배 규칙서.
when토토이진 옵션, 읽기 또는 작성된 파일은 하나의 텍스트 파일입니다. 테이블 행당 줄. 연속의 열 (속성)이 분리됩니다 구분자 캐릭터에 의해. 속성 값 자체는입니다 출력 함수에 의해 생성 된 문자열 또는 각 속성의 데이터 유형의 입력 함수. 지정된 Null-Value String은 Null 인 속성 대신 사용됩니다.토토 FROM있으면 오류가 발생합니다 입력 파일의 줄은 예상되는.
OIDS가 지정되면 OID가 읽거나 작성됩니다. 사용자 데이터 열에 앞서 첫 번째 열. (오류입니다 없는 테이블에 OID가 지정된 경우 제기 oids.)
데이터 종료는 한 줄로 표시 될 수 있습니다. 그냥 뒤 슬래시-기간 (\.). an Unix에서 읽을 때 데이터 종료 마커가 필요하지 않습니다. 파일 끝이 완벽하게 잘 작동하기 때문에 파일. 그러나 끝 데이터를 클라이언트에 또는 클라이언트로 복사 할 때 마커가 제공되어야합니다. 애플리케이션.
BackSlash 문자 (\) 될 수 있습니다 에서 사용토토데이터를 인용 할 데이터 그렇지 않으면 행 또는 열로 찍을 수있는 문자 구분자. 특히 다음 문자필수앞에 a 속성 값의 일부로 나타나면 BacksLash : Backslash 자체, Newline 및 현재 구분 기호 성격.
다음 특수 백 슬래시 시퀀스는에 의해 인식됩니다.토토 FROM:
시퀀스 | 대표 |
---|---|
\ b | Backspace (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각각 시퀀스. 현재 (PostgreSQL7.2 및 이전 버전)입니다 데이터 캐리지 리턴을 나타낼 수 있습니다 특별 인용 및 백 슬래시로 데이터를 나타 내기 위해 그리고 Newline. 그러나 이러한 표현은 그렇지 않습니다 향후 릴리스에서 기본적으로 허용됩니다.
각 행의 끝은 유닉스 스타일로 표시됩니다. Newline ( "\ n"). 현재,토토 FromDOS-를 포함하는 파일이 주어지면 원하는대로 작동하지 않습니다. 맥 스타일의 신약. 이것은 미래에 변화 할 것으로 예상됩니다 릴리스.
에 사용 된 파일 형식복사 이진변경 사항PostgreSQLV7.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은 예약되어 있습니다 중요한 파일 형식 문제; 독자는 IF를 중단해야합니다 이 범위에서 예상치 못한 비트가 설정됩니다. 비트 0-15 뒤로 호환 형식을 신호하기 위해 예약되어 있습니다 문제; 독자는 단순히 예상치 못한 것을 무시해야합니다 이 범위에 비트가 설정됩니다. 현재 하나의 플래그 비트 만 있습니다 정의되고 나머지는 0이어야합니다.
1 인 경우 OID가 덤프에 포함됩니다. 0, 아니다
int32 나머지 헤더의 바이트의 길이는 아닙니다 자기 포함. 초기 버전에서는 이것이 될 것입니다 0, 첫 번째 튜플은 즉시 따릅니다. 미래 형식으로 변경하면 추가 데이터가 헤더에 존재합니다. 독자는 조용히 건너 뛰어야합니다 모든 헤더 확장 데이터를 통해 무엇을 .
헤더 확장 영역은 a를 포함하도록 구상되었습니다 자기 식별 청크 순서. 플래그 필드는 아닙니다 독자들에게 확장 영역에 무엇이 있는지 알리기위한 것입니다. 헤더 확장 내용의 특정 설계는 나중에 릴리스.
이 디자인은 뒤로 호환 헤더를 모두 허용합니다 추가 (헤더 확장 청크 추가 또는 저음 플래그를 설정하십시오 비트) 및 비 백워드 호환 변경 (고차 설정 이러한 변경 사항을 알리기 위해 비트를 플래그하고 지원 데이터를 추가합니다. 필요한 경우 확장 영역).
각 튜플은 int16 수에서 시작합니다. 튜플의 들판. (현재, 테이블에있는 모든 튜플이 있습니다 똑같은 수를 가지고 있지만 항상 사실이 아닐 수도 있습니다.) 그런 다음 튜플의 각 필드마다 반복되면 INT16이 있습니다.Typlen아마도 단어 뒤에 현장 데이터. 그만큼Typlen필드입니다 이렇게 해석 :
필드는 null입니다. 데이터는 따르는 데 없습니다.
필드는 고정 길이 데이터 유형입니다. 정확히 n 바이트 데이터를 따르는TyplenWord.
필드는 AVarlena데이터 유형. 다음 4 바이트는입니다.Varlena헤더는 총계를 포함합니다 자체를 포함한 가치 길이.
향후 사용을 위해 예약.
널 비 널 필드의 경우 독자가를 확인할 수 있습니다.Typlen예상되는 것과 일치Typlen목적지 열. 이것은 간단하지만 매우 유용한 점검을 제공합니다. 데이터는 예상대로.
정렬 패딩 또는 기타 추가 데이터가 없습니다. 필드 사이. 또한 형식은 그렇지 않습니다 데이터 유형이 회의 별 회의인지 여부를 구별합니다 통과 값. 이 두 조항 모두 의도적입니다 파일의 이식성을 향상시키는 데 도움이 될 수 있습니다 (비록 코스 엔지니어 및 플로팅 포인트 형식 문제는 여전히 가능합니다 이진 파일을 기계를 가로 질러 이동하지 못하도록하십시오).
OID가 덤프에 포함 된 경우 OID 필드 즉시 필드 카운트 단어를 따릅니다. 그것은 정상입니다 필드 카운트에 포함되지 않는 것을 제외하고 필드. ~ 안에 특히Typlen--- 이렇게하면 4 바이트 대 8 바이트 OID를 처리 할 수 있습니다. 많은 고통, 그리고 그 경우 OID를 귀무로 표시 할 수 있습니다. 바람직하다.
다음 예제는 표준 출력에 테이블을 복사합니다. 필드 구분 기호로서 수직 막대 (|) :
국가 복사stdoutdelimiter '|';
UNIX 파일의 데이터를에 복사하려면Country테이블 :
'/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