지원 버전 :현재(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
이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

토토 커뮤니티

이름

복사-파일과 a 사이의 데이터 복사 테이블

시놉시스

토토 커뮤니티TableName[([, ...])]
    에서  'filename' | stdin
    [ [ 와 함께 ] 
          [바이너리] 
          [OIDS]
          [Delimiter [as] 'Delimiter' ]]
          [null [as] 'null String' ]]]]

복사TableName[([, ...])]
    에게  'filename' | stdout
    [ [ 와 함께 ] 
          [바이너리]
          [OIDS]
          [Delimiter [as] 'Delimiter' ]]
          [null [as] 'null String' ]]

설명

토토 커뮤니티간에 데이터 이동PostgreSQL표 및 표준 파일 시스템 파일.복사a의 내용을 복사합니다 테이블to파일, while복사데이터 사본From테이블에 파일 (추가 이미 테이블에있는 모든 것에 대한 데이터).

열 목록이 지정된 경우토토 커뮤니티지정된 데이터 만 복사합니다 파일에 대한 열. 에 열이있는 경우 열 목록에없는 테이블복사 에서해당 열의 기본값을 삽입합니다.

토토 커뮤니티파일 이름으로 지시PostgreSQL직접 서버 파일에서 읽거나 쓰십시오. 파일에 액세스 할 수 있어야합니다 서버와 이름은 섬기는 사람. 언제Stdin또는stdout지정되어 있으며 데이터는 TH를 통해 전송됩니다 클라이언트와 서버 간의 연결.

매개 변수

TableName

기존의 이름 (선택적으로 스키마 자격) 테이블.

컬럼

복사 할 열의 선택적 목록. 열이없는 경우 목록이 지정되고 모든 열이 사용됩니다.

filename

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

Stdin

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

Stdout

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

BINAGE

모든 데이터가 이진 형식으로 저장하거나 읽습니다. 텍스트보다는. 를 지정할 수 없습니다.Delimiter또는NULL이진 모드의 옵션.

OIDS

각 행의 OID 복사를 지정합니다. (오류입니다 If 제기OIDSa Oids가없는 테이블.)

Delimiter

각각의 열을 분리하는 단일 문자 파일의 행 (줄). 기본값은 탭 문자입니다.

null String

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

참고 :a복사 에서,이 문자열과 일치하는 모든 데이터 항목은 그렇습니다 널 값으로 저장되므로 사용한 것과 동일한 문자열을 사용합니다.복사.

노트

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

Binary키워드는 모든 데이터를 유발합니다 텍스트가 아닌 이진 형식으로 저장/읽기. 그것은 일반 텍스트 모드보다 다소 빠르지 만 이진 형식 파일은 기계 아키텍처에서 휴대가 적고PostgreSQL버전.

값이있는 테이블에 선정 된 권한이 있어야합니다. 읽기복사및 권한을 삽입하십시오 값이 삽입되는 테이블토토 커뮤니티 From.

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

혼동하지 마십시오토토 커뮤니티withPSQL교육\ 토토 커뮤니티. \ 토토 커뮤니티호출stdin에서 복사또는stdout에 복사, 그리고 데이터를 가져 오거나 저장합니다 에 액세스 할 수있는 파일에서PSQL클라이언트. 따라서 파일 접근성 및 액세스 권한은 서버가 아닌 클라이언트가\ 토토 커뮤니티사용됩니다.

사용 된 파일 이름이 권장됩니다.토토 커뮤니티항상 절대 경로로 지정됩니다. 이것 의 경우 서버에 의해 시행됩니다.복사 에게하지만토토 커뮤니티 from당신은 가지고 있습니다 상대 경로로 지정된 파일에서 읽는 옵션. 경로는 작업 디렉토리와 관련하여 해석됩니다. 서버 프로세스 (데이터 디렉토리 아래 어딘가) 클라이언트의 작업 디렉토리.

복사트리거를 호출합니다 대상 테이블의 제약 조건을 확인하십시오. 그러나 그럴 것입니다 규칙을 호출하지 마십시오.

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

파일 형식

텍스트 형식

언제토토 커뮤니티BINAGE옵션, 데이터 읽기 또는 서면은 테이블 행당 한 줄의 텍스트 파일입니다. 컬럼 행은 구분자 문자로 분리됩니다. 열 값 자체는 출력 기능에 의해 생성 된 문자열이며 또는 각 속성 데이터의 입력 함수에 허용 가능 유형. 지정된 널 문자열은 열 대신 사용됩니다. 그건 널입니다.토토 커뮤니티 From입력 파일의 라인에 더 많은 것이 포함 된 경우 오류 예상보다 열. 만약에OIDSis 지정된 OID는 첫 번째 열로 읽거나 쓰여 있습니다. 사용자 데이터 열에 앞서.

데이터 종료는 한 줄로 표시 될 수 있습니다. 그냥 뒤 슬래시-기간 (\.). an 파일을 읽을 때 데이터 종료 마커가 필요하지 않습니다. 파일 끝이 완벽하게 잘 작동하기 때문에; 필요합니다 Pre-3.0을 사용하여 클라이언트 애플리케이션에 데이터를 복사 할 때 클라이언트 프로토콜.

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

지정된 널 문자열은에 의해 전송됩니다.복사백 슬래시를 추가하지 않고; 거꾸로,토토 커뮤니티 From일치합니다 백 슬래시를 제거하기 전에 NULL 스트링에 대한 입력. 따라서와 같은 널 문자열\ n실제 데이터 값과 혼동 될 수 없습니다\ n(\\ n).

다음 특수 백 슬래시 시퀀스는에 의해 인식됩니다.토토 커뮤니티 From:

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

위의 테이블은 자체를 나타 내기 위해 촬영됩니다. 그러나 조심하십시오 그럴 수도 있기 때문에 백 슬래시를 불필요하게 추가하는 것입니다 실수로 데이터 끝 마커와 일치하는 문자열을 생성합니다 (\.) 또는 널 문자열 (\ n기본적으로). 이 문자열은 인식 될 것입니다 다른 백 슬래시 처리가 완료되기 전에.

응용 프로그램에서 사본을 생성하는 것이 좋습니다 데이터 변환 데이터 Newlines 및 Carriage Returns reto\ nand\ r각각 시퀀스. 현재는 대표 할 수 있습니다 백 슬래시 및 캐리지 리턴에 의한 데이터 캐리지 리턴 및 백 슬래시와 Newline에 의해 데이터 Newline을 나타냅니다. 그러나 이러한 표현은 미래에 받아 들여지지 않을 수 있습니다 릴리스. 그들은 또한 부패에 매우 취약합니다 복사 파일은 다른 기계에서 전송됩니다 (for 예를 들어, 유닉스에서 Windows 또는 그 반대로)

복사각 행이 종료됩니다 유닉스 스타일의 Newline ("\ n"). MS Windows에서 실행되는 서버 대신 출력 캐리지 리턴/Newline ("\ r \ n")하지만토토 커뮤니티서버 파일에; 일관성을 위해 플랫폼에서stdout에 복사항상 보낸다"\ n"서버 플랫폼에 관계없이.토토 커뮤니티끝이 끝나는 선을 처리 할 수 ​​있습니다 신생, 운송 반환 또는 운송 반환/신생. 에게 낙인이없는 신형으로 인한 오류의 위험을 줄이거나 데이터와 같은 캐리지 리턴,토토 커뮤니티라인이 끝나면 불만을 제기합니다 입력이 모두 비슷한 것은 아닙니다.

이진 형식

에 사용 된 파일 형식복사 이진변경 사항PostgreSQL7.4. 새로운 형식은 구성됩니다 파일 헤더, 행 데이터를 포함하는 튜플 이상 및 파일 트레일러. 헤더와 데이터는 이제 네트워크 바이트에 있습니다 주문하다.

파일 헤더

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

서명

11 바이트 시퀀스pg토토 커뮤니티 \ n \ 377 \ r \ n \ 0--- 제로 바이트는 서명의 필수 부분입니다. (그만큼 서명은 쉽게 식별 할 수 있도록 설계되었습니다 8 비트 클리어에 의해 결정된 파일 옮기다. 이 서명은 변경됩니다 라인 끝 변환 필터, 제로 바이트, 삭제, 높은 비트를 떨어 뜨리거나 패리티 변경.)

플래그 필드

32 비트 정수 비트 마스크가 중요한 측면을 나타냅니다 파일 형식의. 비트는 0에서 번호가 매겨집니다 (LSB) ~ 31 (MSB). 주목하십시오 이 필드는 네트워크 바이트 주문 (대부분 중요한 바이트는 모든 정수 필드와 마찬가지로 파일 형식에 사용됩니다. 비트 16-31은 예약되어 있습니다 중요한 파일 형식 문제를 나타냅니다. 독자가해야합니다 이 범위에서 예상치 못한 비트를 찾으면 중단하십시오. 비트 0-15는 뒤로 호환성을 신호하도록 예약되어 있습니다 형식 문제; 독자는 단순히 어떤 것을 무시해야합니다 이 범위에 예기치 않은 비트가 설정됩니다. 현재 하나만 플래그 비트가 정의되고 나머지는 0이어야합니다.

비트 16

1 인 경우 OID가 데이터에 포함됩니다. 0, 아니다

헤더 확장 영역 길이

32 비트 정수, 나머지 바이트의 길이 자아를 포함하지 않는 헤더. 현재 이것은 0입니다. 그리고 첫 번째 튜플은 즉시 따릅니다. 미래의 변화 형식으로 추가 데이터가있을 수 있습니다. 헤더에서. 독자는 조용히 건너 뛰어야합니다 헤더 확장 데이터는 무엇을 해야할지 모릅니다. 와 함께.

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

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

튜플

각 튜플은 16 비트 정수 수로 시작됩니다. 튜플의 필드 수. (현재, 모든 튜플의 a 테이블이 같은 수를 가지지 만 항상 그렇지 않을 수도 있습니다. 그렇다면 튜플의 각 필드에 대해 반복되면 32 비트 길이 단어와 많은 바이트의 필드 데이터가 뒤 따릅니다. (길이 단어에는 자체가 포함되어 있지 않으며 0이 될 수 있습니다.) 특별한 경우, -1은 널 필드 값을 나타냅니다. 가치 없음 널 케이스에서 바이트가 따릅니다.

정렬 패딩 또는 기타 추가 데이터가 없습니다. 필드 사이.

현재 A의 모든 데이터 값복사 이진파일은 이진 형식으로 가정됩니다 (형식 코드 1). 향후 확장이 추가 될 것으로 예상됩니다 컬럼 당 형식 코드를 허용하는 헤더 필드 지정.

실제에 대한 적절한 바이너리 형식을 결정합니다 튜플 데이터 상담해야합니다.PostgreSQL소스, 특히*send*recv각 열의 데이터 유형에 대한 함수 (일반적으로 이러한 기능은에 있습니다.src/backend/utils/adt/소스 배포).

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

파일 트레일러

파일 트레일러는 16 비트 정수 단어로 구성됩니다 -1을 포함합니다. 이것은 튜플과 쉽게 구별됩니다 필드 카운트 단어.

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

다음 예제는 다음을 사용하여 클라이언트에게 테이블을 복사합니다. 수직 막대 (|) 필드로 Delimiter :

Delimiter '|';과 함께 stdout으로 국가를 복사하십시오.

파일의 데이터를 파일로 복사하려면Country테이블 :

'/usr1/proj/bray/sql/country_data';

테이블에 복사하는 데 적합한 데이터 샘플이 있습니다. 에서Stdin:

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

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

다음은 동일한 데이터이며 이진 형식의 출력입니다. 그만큼 UNIX 유틸리티를 통해 필터링 한 후 데이터가 표시OD -C. 테이블에는 세 개의 열이 있습니다. 첫 번째는 있습니다 유형char (2), 두 번째는 유형이 있습니다텍스트, 세 번째는 유형이 있습니다정수. 모든 행은 세 번째로 널 값을 갖습니다. 열.

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 \ 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
0000100 A 377 377 377 377 \ 0 003 \ 0 \ 0 \ 0 002 D Z \ 0 \ 0 \ 0 \ 0
0000120 007 A L G E R 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 버전 7.3 전에 사용되었습니다 그리고 여전히 지원됩니다 :

복사 [BANIAR]TableName[OIDS와]
    에서  'filename' | stdin
    [[사용] Delimiters 'Delimiter' ]]
    [NULL으로 'null String' ]]

복사 [binary]TableName[OIDS와 함께]
    에게  'filename' | stdout
    [[사용] Delimiters 'Delimiter' ]]
    [NULL으로 'NULL String' ]