복사테이블 [ ( 열[, ...] ) ]
'에서파일 이름' | 표준 입력[ [ 와 ]
[ 바이너리 ]
[ 오이즈 ]
[ 구분 기호 [ AS ] '구분자' ]
[ NULL [ 그대로 ] '널 문자열' ] ]
복사테이블 [ ( 열[, ...] ) ]
'에파일 이름' | stdout[ [ 와 ]
[ 바이너리 ]
[ 오이즈 ]
[ 구분 기호 [ AS ] '구분자' ]
[ NULL [ 그대로 ] '널 문자열' ] ]
기존의 이름(아마도 스키마로 한정된) 테이블.
복사할 열의 선택적 목록입니다. 열이 없는 경우 목록이 지정되면 모든 열이 사용됩니다.
입력 또는 출력의 절대 Unix 경로 이름 파일.
입력이 클라이언트에서 나오도록 지정합니다. 신청합니다.
출력이 클라이언트로 이동하도록 지정합니다. 신청합니다.
필드 형식 지정 동작을 변경하여 모두 강제로 적용
데이터는 바이너리 형식이 아닌 바이너리 형식으로 저장되거나 읽혀집니다.
텍스트. 지정할 수 없습니다.DELIMITER또는NULL바이너리 모드에서.
다음에 대한 내부 개체 ID(OID) 복사를 지정합니다. 각 행.
각 필드를 구분하는 단일 문자 토토의 행(줄)입니다.
NULL 값을 나타내는 문자열. 기본값 이다"\N"(백슬래시-N). 당신은 선호할 수도 있습니다 예를 들어 빈 문자열입니다.
참고:복사할 때, 이 문자열과 일치하면 NULL 값으로 저장됩니다. 따라서 동일한 문자열을 사용해야 합니다. 복사할 때 사용한 것처럼.
복사데이터 이동포스트그레SQL테이블 및 표준 파일 시스템 파일.복사 대상다음의 내용을 복사합니다. 테이블에토토, 동안다음에서 복사데이터 복사from파일을 테이블에 추가(추가 이미 테이블에 있는 데이터로 데이터를 이동합니다.
열 목록이 지정되면,복사지정된 위치의 데이터만 복사합니다. 파일과의 열. 해당 항목에 열이 있는 경우 열 목록에 없는 테이블,복사 보낸사람해당 열에 기본값을 삽입합니다.
복사파일 이름이 있는 명령은포스트그레SQL백엔드에서 직접 파일을 읽거나 파일에 씁니다. 파일은 다음 사용자가 액세스할 수 있어야 합니다. 백엔드와 이름은 관점에서 지정되어야 합니다. 백엔드. 언제표준 입력또는stdout이 지정되면 데이터는 다음을 통해 흐릅니다. 클라이언트 프런트엔드에서 백엔드로.
팁:혼란하지 마십시오.복사와 함께psql지시\복사. \복사호출다음에서 복사 표준 입력또는표준 출력으로 복사그리고 그런 다음에 액세스할 수 있는 파일에 데이터를 가져오거나 저장합니다.psql클라이언트. 따라서 토토 접근성 및 액세스 권한은 클라이언트에 따라 다릅니다. 백엔드보다 때\복사이다 사용되었습니다.
복사일반에서만 사용할 수 있습니다. 뷰가 아닌 테이블입니다.
BINARY 키워드는 모든 데이터를 다음과 같이 저장/읽도록 강제합니다. 텍스트가 아닌 바이너리 형식입니다. 것보다 다소 빠르다. 일반 복사 명령이지만 바이너리 복사 파일은 이식 가능하지 않습니다. 머신 아키텍처 전반에 걸쳐.
기본적으로 텍스트 복사는 탭("\t") 문자를
필드 사이의 구분 기호. 필드 구분 기호는 다음과 같이 변경될 수 있습니다.
키워드가 포함된 다른 단일 문자DELIMITER. 데이터 필드의 문자
구분 기호 문자와 일치하면 백슬래시가 됩니다.
인용했습니다.
당신은 있어야 합니다권한 선택켜짐 값을 읽는 모든 테이블복사 에및삽입 권한에 값이 삽입되는 테이블복사본:. 백엔드에도 적절한 것이 필요합니다. 읽거나 쓴 모든 토토에 대한 Unix 권한복사.
복사본:모든 트리거를 호출합니다. 대상 테이블의 제약 조건을 확인합니다. 그러나 그것은 규칙을 호출하지 않습니다.
복사처음에 작업을 중지합니다. 오류. 다음과 같은 경우에는 문제가 발생하지 않아야 합니다.복사 대상, 하지만 대상 관계는 이미 a에서 이전 행을 받았습니다.다음에서 복사. 이 행은 표시되지 않거나 액세스할 수 있지만 여전히 디스크 공간을 차지합니다. 이 금액은 다음과 같습니다. 장애가 발생하면 상당한 양의 디스크 공간이 낭비됩니다. 대규모 복사 작업이 잘 진행되었습니다. 당신은 원할 수도 있습니다 호출진공낭비된 것을 회복하기 위해 공간.
a에 이름이 지정된 파일복사명령은 클라이언트가 아닌 백엔드에서 직접 읽거나 씁니다. 신청. 그러므로 그들은 다음에 거주하거나 접근 가능해야 합니다. 클라이언트가 아닌 데이터베이스 서버 시스템. 그들은 있어야합니다 에 의해 액세스 가능하고 읽기 또는 쓰기 가능포스트그레SQLuser (사용자 ID는 서버입니다. 클라이언트가 아닌)으로 실행됩니다.복사이름 지정 파일은 데이터베이스 수퍼유저에게만 허용됩니다. 백엔드에 권한이 있는 파일 읽기 또는 쓰기 액세스합니다.
팁:그psql지시\복사읽기 또는 쓰기 클라이언트의 권한이 있는 클라이언트 컴퓨터의 파일, 따라서 슈퍼유저에게만 국한되지 않습니다.
다음에서 사용된 파일 이름을 권장합니다.복사항상 절대 경로로 지정됩니다. 이는 다음의 경우 백엔드에 의해 시행됩니다.복사 대상하지만복사 보낸사람당신은 토토에서 읽을 수 있는 옵션이 있습니다 상대 경로로 지정됩니다. 경로가 해석됩니다. 백엔드의 작업 디렉토리를 기준으로 합니다(아래 어딘가$PGDATA), 클라이언트의 작업이 아님 디렉토리.
언제복사은(는) 없이 사용됩니다. BINARY 옵션, 읽거나 쓴 파일은 다음과 같은 텍스트 파일입니다. 테이블 행당 줄. 행의 열(속성)이 구분됩니다. 구분 문자로. 속성 값 자체는 다음과 같습니다. 출력 함수에 의해 생성되거나 허용되는 문자열 각 속성의 데이터 유형에 대한 입력 함수입니다. 지정된 널값 문자열은 NULL인 속성 대신 사용됩니다.복사본:있는 경우 오류가 발생합니다. 입력 파일의 줄에 현재보다 더 많거나 적은 열이 포함되어 있습니다. 예상됩니다.
OIDS가 지정되면 OID는 다음과 같이 읽혀지거나 쓰여집니다. 사용자 데이터 열 앞에 있는 첫 번째 열입니다. (오류는 OIDS가 없는 테이블에 대해 OIDS가 지정된 경우 발생합니다. OID.)
데이터의 끝은 다음을 포함하는 한 줄로 표시될 수 있습니다. 백슬래시 마침표(\.). 안 Unix에서 읽을 때는 데이터 끝 표시가 필요하지 않습니다. file, 파일의 끝이 완벽하게 잘 작동하기 때문입니다. 하지만 끝 클라이언트와 데이터를 복사할 때 마커가 제공되어야 합니다. 신청합니다.
백슬래시 문자(\)일 수 있습니다. 에서 사용됨복사데이터를 인용하는 데이터 행이나 열로 간주될 수 있는 문자 구분 기호. 특히 다음 문자는반드시앞에 백슬래시가 속성 값의 일부로 나타나는 경우: 백슬래시 자체, 줄 바꿈 및 현재 구분 기호 문자.
다음 특수 백슬래시 시퀀스는 다음으로 인식됩니다.다음에서 복사:
| 순서 | 대표 |
|---|---|
| \b | 백스페이스(ASCII 8) |
| \f | 폼 피드(ASCII 12) |
| \n | 줄바꿈(ASCII 10) |
| \r | 캐리지 리턴(ASCII 13) |
| \t | 탭(ASCII 9) |
| \v | 세로 탭(ASCII 11) |
| \숫자 | 백슬래시 뒤에 1~3개의 8진수가 옵니다. 해당 숫자 코드로 문자를 지정합니다. |
데이터 문자 앞에 백슬래시를 넣지 마십시오.N또는 마침표(.). 그러한 쌍은 기본 null 문자열로 오인되거나 데이터 끝 표시자입니다. 기타 백슬래시 위 표에 언급되지 않은 문자는 자신을 대표하는 것으로 간주됩니다.
애플리케이션이 토토를 생성하는 것이 좋습니다. 데이터는 데이터 개행 및 캐리지 리턴을로 변환합니다.\n그리고\r시퀀스 각각. 현재 (포스트그레SQL7.2 및 이전 버전)입니다. 아무 것도 없이 데이터 캐리지 리턴을 나타낼 수 있습니다. 특수 인용 및 백슬래시로 데이터 개행을 나타냅니다. 그리고 개행. 그러나 이러한 표현은 그렇지 않습니다. 향후 릴리스에서는 기본적으로 허용됩니다.
각 행의 끝은 유닉스 스타일로 표시됩니다. 개행("\n"). 현재,다음에서 복사DOS- 또는 Mac 스타일 줄바꿈. 이는 앞으로 바뀔 것으로 예상된다. 릴리스합니다.
다음에 사용되는 토토 형식복사 바이너리변경됨PostgreSQLv7.1. 새로운 형식은 다음과 같습니다 토토 헤더, 0개 이상의 튜플, 파일 트레일러로 구성됩니다.
토토 헤더는 24바이트의 고정 필드로 구성됩니다. 그 뒤에 가변 길이 헤더 확장 영역이 옵니다. 는 고정 필드는 다음과 같습니다.
12바이트 시퀀스PGBCOPY\n\377\r\n\0--- 참고하세요 null은 서명의 필수 부분입니다. ( 서명은 쉽게 식별할 수 있도록 설계되었습니다. 8비트 클린이 아닌 프로그램에 의해 지워진 파일 양도. 이 서명은 다음에 의해 변경됩니다. 개행 번역 필터, null 삭제, 삭제 높은 비트 또는 패리티 변경.)
25073_25275
int32 비트 마스크는 토토 형식. 비트는 0()부터 번호가 매겨집니다.LSB) ~ 31 (MSB) --- 이 필드는 모든 후속 항목과 마찬가지로 소스의 엔디안과 함께 저장됩니다. 정수 필드. 비트 16-31은 다음을 나타 내기 위해 예약되어 있습니다. 중요한 토토 형식 문제; 다음과 같은 경우 리더가 중단해야 합니다. 이 범위에 예상치 못한 비트가 설정된 것을 발견합니다. 비트 0-15 이전 버전과 호환되는 형식을 알리기 위해 예약되어 있습니다. 문제; 독자는 예상치 못한 내용을 무시해야 합니다. 비트가 이 범위에 설정됩니다. 현재 하나의 플래그 비트만 있습니다. 정의되고 나머지는 0이어야 합니다.
1인 경우 OID가 덤프에 포함됩니다. 0이면 아님
int32 헤더의 나머지 부분 길이(바이트), 아님 자기도 포함해서. 초기 버전에서는 이렇습니다. 0이고 첫 번째 튜플이 바로 뒤에옵니다. 미래 형식을 변경하면 추가 데이터를 얻을 수 있습니다. 헤더에 존재합니다. 독자는 조용히 건너뛰어야 합니다. 헤더 확장 데이터에 대해서는 무엇을 해야 할지 모릅니다. ~와 함께 하세요.
헤더 확장 영역은 다음을 포함하도록 구상됩니다. 자체 식별 청크의 시퀀스. 플래그 필드는 다음과 같습니다. 확장 영역에 무엇이 있는지 독자들에게 알리기 위한 것입니다. 헤더 확장 내용의 구체적인 디자인은 나중에 출시됩니다.
이 디자인은 이전 버전과 호환되는 헤더를 모두 허용합니다. 추가(헤더 확장 청크 추가 또는 하위 플래그 설정) 비트) 및 이전 버전과 호환되지 않는 변경(상위 설정 그러한 변경 사항을 알리기 위해 비트에 플래그를 지정하고 지원 데이터를 추가합니다. 필요한 경우 확장 영역).
각 튜플은 int16 개수의 튜플로 시작합니다. 튜플의 필드. (현재 테이블의 모든 튜플은 같은 수를 가지지만 항상 사실이 아닐 수도 있습니다.) 그런 다음 튜플의 각 필드에 대해 반복되면 int16타이플렌단어 다음에 올 수도 있음 필드 데이터.타이플렌필드는 다음과 같이 해석됩니다:
필드가 NULL입니다. 다음 데이터가 없습니다.
필드는 고정 길이 데이터 유형입니다. 정확히 N바이트 데이터는 다음을 따릅니다.타이플렌단어.
필드는발레나데이터 유형. 다음 4바이트는발레나28599_28677
향후 사용을 위해 예약되었습니다.
NULL이 아닌 필드의 경우 독자는 다음을 확인할 수 있습니다.타이플렌예상과 일치함타이플렌목적지용 칼럼. 이는 간단하지만 매우 유용한 검사를 제공합니다. 데이터는 예상한 대로입니다.
정렬 패딩이나 기타 추가 데이터가 없습니다. 필드 사이. 형식은 그렇지 않습니다. 데이터 유형이 참조에 의한 전달인지 아니면 값별 전달. 이 두 조항은 모두 의도적인 것입니다. 파일의 이식성을 향상시키는 데 도움이 될 수 있습니다(비록 코스 엔디안 및 부동 소수점 형식 문제는 여전히 발생할 수 있습니다. 컴퓨터 간에 바이너리 파일을 이동하지 못하게 합니다.
OID가 덤프에 포함된 경우 OID 필드 필드 수 단어 바로 뒤에 옵니다. 그것은 정상이다 필드 수에 포함되지 않는다는 점을 제외하면 필드입니다. 에서 특히 그것은타이플렌--- 이렇게 하면 4바이트 OID와 8바이트 OID를 너무 많이 처리하지 않고도 처리할 수 있습니다. 많은 고통이 따르며, 그럴 경우 OID가 NULL로 표시될 수 있습니다. 항상 바람직하다는 것이 증명되었습니다.
다음 예에서는 다음을 사용하여 테이블을 표준 출력으로 복사합니다. 필드 구분 기호로 세로 막대(|) 사용:
다음 국가로 복사stdout구분 기호 '|';
Unix 파일의 데이터를 다음으로 복사하려면국가테이블:
'/usr1/proj/bray/sql/country_data'에서 국가 복사;
다음은 테이블에 복사하기에 적합한 데이터 샘플입니다 에서표준 입력(그래서 종료되었습니다. 마지막 줄의 순서):
AF 아프가니스탄 알바니아 DZ 알제리 ZM 잠비아 ZW 짐바브웨 \.
각 줄의 공백은 실제로 TAB임을 참고하세요.
다음은 동일한 데이터이며 바이너리 형식으로 출력됩니다. Linux/i586 머신. 데이터는 필터링 후 표시됩니다. 유닉스 유틸리티od -c. 테이블은 3개가 있어요 분야; 첫 번째는문자(2)두 번째는텍스트, 세 번째는정수. 모든 행의 세 번째 행에는 null 값이 있습니다. 필드.
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 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