복사테이블 이름 [ ( 열[, ...] ) ]
에서 '파일 이름' | 표준
[ [ 와 함께 ]
[ 바이너리 ]
[ 오이즈 ]
[ 구분 기호 [ AS ] '구분자' ]
[ NULL [ 그대로 ] '널 문자열' ]
[ CSV [ 견적 [ AS ] '인용문' ]
[ 탈출 [ AS ] '탈출' ]
[ 강제는 NULL이 아님열[, ...] ]
복사테이블 이름 [ ( 열[, ...] ) ]
에게 '파일 이름' | 표준 출력
[ [ 와 함께 ]
[ 바이너리 ]
[ 오이즈 ]
[ 구분 기호 [ AS ] '구분자' ]
[ NULL [ 그대로 ] '널 문자열' ]
[ CSV [ 견적 [ AS ] '인용문' ]
[ 탈출 [ AS ] '탈출' ]
[강제 인용열 [, ...] ]
복사다음 사이에 데이터 이동포스트그레SQL테이블 및 표준 스포츠 토토 결과 시스템 스포츠 토토 결과.복사 대상다음의 내용을 복사합니다. 테이블에스포츠 토토 결과, 동안복사본:데이터 복사from스포츠 토토 결과을 테이블에 추가(추가 이미 테이블에 있는 데이터로 데이터를 이동합니다.
열 목록이 지정되면,복사지정된 위치의 데이터만 복사합니다. 파일과의 열. 해당 항목에 열이 있는 경우 열 목록에 없는 테이블,복사 에서해당 열에 기본값을 삽입합니다.
복사파일 이름이 있는 명령은PostgreSQL서버에서 직접 파일을 읽거나 파일에 씁니다. 파일은 다음 사용자가 액세스할 수 있어야 합니다. 서버와 이름은 사용자의 관점에서 지정되어야 합니다. 섬기는 사람. 언제STDIN또는STDOUT이 지정되면 데이터는 다음을 통해 전송됩니다. 클라이언트와 서버 간의 연결.
기존 이름(선택적으로 스키마 한정) 테이블.
복사할 열의 선택적 목록입니다. 열이 없는 경우 목록이 지정되면 모든 열이 사용됩니다.
입력 또는 출력 파일의 절대 경로 이름.
입력이 클라이언트에서 나오도록 지정합니다. 애플리케이션.
출력이 클라이언트로 이동하도록 지정합니다. 애플리케이션.
모든 데이터를 바이너리 형식으로 저장하거나 읽습니다. 텍스트로보다는. 다음을 지정할 수 없습니다.DELIMITER, NULL, 또는CSV바이너리 모드의 옵션.
각 행의 OID 복사를 지정합니다. (오류는 if 발생OIDS다음에 대해 지정되었습니다. OID가 없는 테이블입니다.)
각 열을 구분하는 단일 문자 스포츠 토토 결과의 행(줄)입니다. 기본값은 탭 문자입니다. 텍스트 모드, 쉼표CSV모드.
널 값을 나타내는 문자열. 기본값은\N(백슬래시-N)(텍스트 모드) 및 따옴표가 없는 빈 값CSV모드. 빈 문자열을 선호할 수도 있습니다. 원하지 않는 경우에는 텍스트 모드에서도 빈 문자열과 null을 구별합니다.
참고:사용 시복사 에서, 이 문자열과 일치하는 모든 데이터 항목은 null 값으로 저장되므로 다음 사항을 확인해야 합니다. 에서 사용한 것과 동일한 문자열을 사용합니다.복사 대상.
쉼표로 구분된 값 선택(CSV) 모드.
따옴표 문자를 지정합니다.CSV모드. 기본값은 큰따옴표입니다.
a 앞에 나타나야 하는 문자를 지정합니다.인용문데이터 문자 값CSV모드. 기본값은인용문값(보통 큰따옴표).
에CSV 복사 에게모드, 인용이 모든 항목에 사용되도록 강제합니다. 비-NULL지정된 각 값 열.NULL출력은 절대 아님 인용했습니다.
에CSV 복사 에서모드, 지정된 각 열을 마치 인용되었으므로 a가 아닙니다.NULL값. 기본 null 문자열의 경우CSV모드 (''), 이 누락된 값이 길이가 0인 것으로 입력됩니다. 문자열.
복사일반에서만 사용할 수 있습니다. 뷰가 아닌 테이블입니다.
그바이너리키워드로 인해 모든 데이터가 발생함 텍스트가 아닌 바이너리 형식으로 저장/읽혀집니다. 그것은 일반 텍스트 모드보다 다소 빠르지만 바이너리 형식입니다. 파일은 머신 아키텍처 전반에 걸쳐 이식성이 떨어집니다.PostgreSQL버전.
귀하는 값이 다음과 같은 테이블에 대한 선택 권한이 있어야 합니다. 읽다복사 대상, 그리고 다음에 대한 권한을 삽입합니다. 값이 삽입되는 테이블다음에서 복사.
a에 이름이 지정된 파일복사명령은 다음과 같습니다 클라이언트가 아닌 서버에서 직접 읽거나 씁니다. 애플리케이션. 그러므로 그들은 다음에 거주하거나 접근 가능해야 합니다. 클라이언트가 아닌 데이터베이스 서버 시스템. 그들은 있어야합니다 에 의해 액세스 가능하고 읽기 또는 쓰기 가능포스트그레SQLuser(서버가 실행하는 사용자 ID as), 클라이언트가 아닙니다.복사파일 이름 지정 중 읽기를 허용하므로 데이터베이스 수퍼유저에게만 허용됩니다. 또는 서버가 액세스할 수 있는 권한이 있는 파일을 작성합니다.
혼란하지 마십시오.복사와 함께psql지시\복사. \복사호출STDIN에서 복사또는STDOUT에 복사, 그런 다음 데이터를 가져오거나 저장합니다. 에 액세스할 수 있는 파일에서psql클라이언트. 따라서 파일 접근성과 접근 권한은 다음 사항에 따라 달라집니다. 서버가 아닌 클라이언트\복사사용됩니다.
다음에서 사용된 파일 이름을 권장합니다.복사항상 절대 경로로 지정됩니다. 이것 다음의 경우 서버에 의해 시행됩니다.복사 에게하지만복사본당신은 가지고 있습니다 상대 경로로 지정된 스포츠 토토 결과에서 읽는 옵션입니다. 경로는 작업 디렉터리를 기준으로 해석됩니다. 서버 프로세스(데이터 디렉토리 아래 어딘가) 클라이언트의 작업 디렉토리.
다음에서 복사모든 트리거를 호출합니다. 대상 테이블의 제약 조건을 확인합니다. 그러나 그것은 규칙을 호출하지 않습니다.
복사입력 및 출력은 다음에 영향을 받습니다.날짜 스타일. 이식성을 보장하기 위해 다른PostgreSQL설치 기본값이 아닌 것을 사용할 수 있음날짜 스타일설정,날짜 스타일다음으로 설정되어야 합니다ISO사용하기 전복사 대상.
복사첫 번째로 작업을 중지합니다. 오류. 다음과 같은 경우에는 문제가 발생하지 않아야 합니다.복사 대상, 그러나 대상 테이블은 이미 a에서 이전 행을 받았습니다.복사 에서. 이러한 행은 표시되거나 액세스할 수 없지만 여전히 디스크 공간을 차지합니다. 이는 상당한 금액이 될 수 있습니다. 대규모 시스템에서 장애가 발생한 경우 낭비되는 디스크 공간 복사 작업. 호출할 수도 있습니다.진공낭비된 공간을 복구합니다.
언제복사는 없이 사용됩니다.바이너리또는CSV옵션, 읽거나 쓴 데이터는 한 줄로 된 텍스트 파일입니다. 테이블 행당. 행의 열은 구분 기호로 구분됩니다. 성격. 열 값 자체는 생성된 문자열입니다. 출력 기능에 의해 또는 입력 기능에 허용되는 각 속성의 데이터 유형. 지정된 null 문자열이 사용됩니다. null인 열 대신에.복사 에서입력 스포츠 토토 결과의 한 줄이라도 오류가 발생하면 예상보다 많거나 적은 열이 포함되어 있습니다. 만약에OIDS이 지정되면 OID는 다음과 같이 읽혀지거나 쓰여집니다. 사용자 데이터 열 앞에 있는 첫 번째 열입니다.
데이터의 끝은 다음을 포함하는 단일 라인으로 표시될 수 있습니다. 백슬래시 마침표(\.). 안 파일에서 읽을 때 데이터 끝 표시가 필요하지 않습니다. 파일 끝이 완벽하게 잘 작동하기 때문에; 그것은 단지 필요하다 3.0 이전 버전을 사용하여 클라이언트 애플리케이션과 데이터를 복사할 때 클라이언트 프로토콜.
백슬래시 문자(\)일 수 있습니다. 에서 사용됨복사데이터를 인용하는 데이터 행이나 열로 간주될 수 있는 문자 구분 기호. 특히 다음 문자는반드시앞에 열 값의 일부로 나타나는 경우 백슬래시: 백슬래시 자체, 줄 바꿈, 캐리지 리턴 및 현재 구분 기호 성격.
지정된 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진수가 옵니다. 해당 숫자 코드로 문자를 지정합니다. |
다음에 언급되지 않은 기타 백슬래시 문자 위의 표는 그 자체를 나타내는 것으로 간주됩니다. 그러나 조심하세요 불필요하게 백슬래시를 추가하는 것은 실수로 데이터 끝 표시와 일치하는 문자열을 생성했습니다. (\.) 또는 널 문자열(\N기본적으로). 이 문자열은 인식됩니다 다른 백슬래시 처리가 완료되기 전에.
애플리케이션을 생성하는 것이 좋습니다.복사데이터 변환 데이터 개행 및 캐리지가로 돌아갑니다.\n그리고\r순서 각각. 현재 데이터 캐리지 리턴을 다음과 같이 나타낼 수 있습니다. 백슬래시와 캐리지 리턴, 데이터 개행 표시 백슬래시와 줄바꿈으로. 그러나 이러한 표현은 향후 릴리스에서는 허용되지 않을 수 있습니다. 그들은 또한 매우 다음과 같은 경우 부패에 취약함복사파일이 다른 시스템으로 전송됩니다(예: Unix에서 Windows로 또는 그 반대로).
복사 대상각 행을 종료합니다 Unix 스타일 줄바꿈("\n"). Microsoft에서 실행되는 서버 Windows는 대신 캐리지 리턴/줄 바꿈()을 출력합니다."\r\n"), 단,복사서버 스포츠 토토 결과에; 일관성을 위해 다양한 플랫폼에서,STDOUT에 복사항상 보냄"\n"서버 플랫폼에 관계없이.다음에서 복사다음으로 끝나는 줄을 처리할 수 있습니다. 줄 바꿈, 캐리지 리턴 또는 캐리지 리턴/줄 바꿈. 에게 백슬래시가 없는 개행 문자로 인한 오류 위험을 줄입니다. 데이터를 의미하는 캐리지 리턴,다음에서 복사줄이 다음으로 끝나면 불평합니다. 입력이 모두 같지는 않습니다.
이 형식은 쉼표를 가져오고 내보내는 데 사용됩니다. 분리된 값(CSV) 스포츠 토토 결과 형식이 사용됨 스프레드시트와 같은 다른 많은 프로그램에서. 대신에 이스케이프 사용:PostgreSQL의 표준 텍스트 모드에서는 공통 CSV를 생성하고 인식합니다. 탈출 메커니즘.
각 레코드의 값은 다음으로 구분됩니다.DELIMITER문자. 값에 다음이 포함된 경우 구분 기호 문자,인용문문자, 그NULL문자열, 마차 리턴 또는 줄바꿈 문자인 경우 전체 값은 다음과 같습니다. 접두사와 접미사는인용문문자 및 a 값 내의 모든 항목인용문문자 또는탈출문자 앞에 이스케이프 문자가 옵니다. 성격. 다음을 사용할 수도 있습니다.포스 인용하다비-를 출력할 때 따옴표를 강제로 사용하려면NULL특정 열의 값.
그CSV형식에는 표준 방식이 없습니다. 구별하기 위해 aNULL값 빈 문자열.PostgreSQL's복사인용을 통해 이를 처리합니다. 에이NULL는 다음과 같이 출력됩니다.NULL문자열이며 인용되지 않습니다. 반면 데이터는 와 일치하는 값NULL문자열은 인용. 따라서 기본 설정을 사용하면 aNULL은 따옴표가 없는 빈 문자열로 작성됩니다. 빈 문자열은 큰따옴표()로 작성됩니다.""). 값을 읽는 것도 비슷한 규칙을 따릅니다. 너 사용할 수 있습니다포스는 NULL이 아닙니다방지하기 위해NULL특정 항목에 대한 입력 비교 열.
참고:CSV 모드는 인식하고 생성합니다. 포함된 캐리지를 포함하는 따옴표 붙은 값이 있는 CSV 파일 반환 및 줄 바꿈. 따라서 파일은 엄격하게 하나가 아닙니다. 텍스트 모드 파일과 같이 테이블 행당 한 줄. 하지만,PostgreSQL거부합니다복사필드에 다음이 포함되어 있으면 입력하세요. 포함된 줄 끝 문자 시퀀스가 일치하지 않습니다. CSV 파일 자체에 사용되는 줄 끝 규칙입니다. 그것은 일반적으로 줄 끝이 포함된 데이터를 가져오는 것이 더 안전합니다. 대신 텍스트 또는 바이너리 형식을 사용하는 문자 CSV.
참고:많은 프로그램에서 이상하고 때때로 CSV 파일이 비뚤어지기 때문에 스포츠 토토 결과 형식이 더 좋습니다. 표준보다 관례. 따라서 당신은 몇 가지를 만날 수 있습니다 이 메커니즘을 사용하여 가져올 수 없는 파일 및복사다음과 같은 파일을 생성할 수 있습니다. 다른 프로그램에서는 처리할 수 없습니다.
다음에 사용되는 스포츠 토토 결과 형식복사 바이너리변경됨PostgreSQL7.4. 새로운 형식은 다음과 같이 구성됩니다. 스포츠 토토 결과 헤더, 행 데이터를 포함하는 0개 이상의 튜플, 스포츠 토토 결과 예고편. 헤더와 데이터는 이제 네트워크 바이트에 있습니다. 주문하다.
스포츠 토토 결과 헤더는 15바이트의 고정 필드로 구성됩니다. 그 뒤에 가변 길이 헤더 확장 영역이 옵니다. 그만큼 고정 필드는 다음과 같습니다.
11바이트 시퀀스PGCOPY\n\377\r\n\0— 0은 바이트는 서명의 필수 부분입니다. (그만큼 서명은 쉽게 식별할 수 있도록 설계되었습니다. 8비트 클린이 아닌 프로그램에 의해 지워진 파일 옮기다. 이 서명은 다음에 의해 변경됩니다. 줄 끝 변환 필터, 0바이트 삭제, 높은 비트가 삭제되었거나 패리티가 변경되었습니다.)
중요한 측면을 나타내는 32비트 정수 비트 마스크 스포츠 토토 결과 형식의. 비트는 0부터 번호가 매겨집니다. (LSB) ~ 31 (MSB). 참고하세요 이 필드는 네트워크 바이트 순서로 저장됩니다(대부분 중요한 바이트부터), 모든 정수 필드도 마찬가지입니다. 스포츠 토토 결과 형식으로 사용됩니다. 비트 16-31은 다음을 위해 예약되어 있습니다. 중요한 스포츠 토토 결과 형식 문제를 나타냅니다. 독자는해야한다 이 범위에 예상치 못한 비트 세트가 발견되면 중단합니다. 비트 0-15는 이전 버전과 호환된다는 신호를 보내기 위해 예약되어 있습니다. 형식 문제; 독자는 어떤 내용이라도 무시해야 합니다. 이 범위에 예상치 못한 비트가 설정되었습니다. 현재 단 1개 플래그 비트가 정의되고 나머지는 0이어야 합니다.
1인 경우 OID가 데이터에 포함됩니다. 0이면 아니다
32비트 정수, 나머지 길이(바이트) 헤더는 포함되지 않습니다. 현재는 0이고, 첫 번째 튜플이 바로 뒤따릅니다. 미래의 변화 형식을 변경하면 추가 데이터가 존재할 수 있습니다. 헤더에. 독자는 조용히 건너뛰어야 합니다. 헤더 확장 데이터는 무엇을 해야할지 모릅니다 와 함께.
헤더 확장 영역은 다음을 포함하도록 구상됩니다. 자체 식별 청크의 시퀀스. 플래그 필드는 다음과 같습니다. 확장 영역에 무엇이 있는지 독자들에게 알리기 위한 것입니다. 헤더 확장 내용의 구체적인 디자인은 나중에 출시됩니다.
이 디자인은 이전 버전과 호환되는 헤더를 모두 허용합니다. 추가(헤더 확장 청크 추가 또는 하위 플래그 설정) 비트) 및 이전 버전과 호환되지 않는 변경(상위 설정 그러한 변경 사항을 알리기 위해 비트에 플래그를 지정하고 지원 데이터를 추가합니다. 필요한 경우 확장 영역).
각 튜플은 16비트 정수 개수로 시작합니다. 튜플의 필드 수입니다. (현재는 모든 튜플이 테이블의 개수는 동일하지만 항상 그렇지는 않을 수도 있습니다. true.) 그런 다음 튜플의 각 필드에 대해 반복됩니다. 32비트 길이의 워드 뒤에 해당 바이트의 필드 데이터가 옵니다. (길이 단어는 자신을 포함하지 않으며 0일 수 있습니다.) 특별한 경우로 -1은 NULL 필드 값을 나타냅니다. 값 없음 NULL 경우에는 바이트가 따릅니다.
정렬 패딩이나 기타 추가 데이터가 없습니다. 필드 사이에.
현재 a의 모든 데이터 값은복사 바이너리파일은 바이너리 형식(형식)으로 가정됩니다. 코드 1). 향후 확장이 추가될 것으로 예상됨 열별 형식 코드를 허용하는 헤더 필드 지정되었습니다.
실제 파일에 적합한 바이너리 형식을 결정하려면
튜플 데이터를 참조해야 합니다.포스트그레SQL소스, 특히*보내기그리고*recv각 열의 데이터 유형에 대한 함수
(일반적으로 이러한 함수는 다음에서 찾을 수 있습니다.src/백엔드/utils/adt/디렉토리
소스 배포).
OID가 파일에 포함되어 있으면 OID 필드 필드 수 단어 바로 뒤에 옵니다. 그것은 정상이다 필드 수에 포함되지 않는다는 점을 제외하면 필드입니다. ~ 안에 특히 길이가 있는 단어가 있습니다. 이를 통해 다음을 처리할 수 있습니다. 큰 어려움 없이 4바이트 대 8바이트 OID를 사용할 수 있습니다. 그것이 바람직하다고 입증되면 OID는 null로 표시됩니다.
다음 예는 다음을 사용하여 클라이언트에 테이블을 복사합니다. 세로 막대(|)를 필드로 사용 구분 기호:
구분자 '|'를 사용하여 국가를 STDOUT으로 복사;
파일의 데이터를 다음으로 복사하려면국가테이블:
'/usr1/proj/bray/sql/country_data'에서 국가 복사;
다음은 테이블에 복사하기에 적합한 데이터 샘플입니다 에서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