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

사설 토토

이름

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

시놉시스

사설 토토TableName[(컬럼[, ...])]
    에서  'filename' | stdin
    [ [ 와 함께 ] 
          [바이너리]
          [OIDS]
          [Delimiter [as] 'Delimiter' ]]
          [null [as] 'null String' ]]
          [CSV [헤더]
                [인용 [as] 'QUOTE' ]] 
                [탈출 [AS] '탈출' ]]
                [힘이 아님[, ...]]

복사TableName[([, ...])]
    에게  'filename' | stdout
    [ [ 와 함께 ] 
          [바이너리]
          [OIDS]
          [Delimiter [as] 'Delimiter' ]]
          [null [as] 'NULL String' ]]
          [CSV [헤더]
                [인용 [as] 'QUOTE' ]] 
                [탈출 [AS] '탈출' ]]
                [힘 견적[, ...]]

설명

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

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

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

매개 변수

TableName

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

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

filename

입력 또는 출력 파일의 절대 경로 이름. Windows 사용자는 경로로 사용되는 백 슬래시를 두 배로 늘려야 할 수도 있습니다. 분리기.

Stdin

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

Stdout

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

Binary

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

OIDS

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

Delimiter

각각 내에서 열을 분리하는 단일 문자 파일의 행 (줄). 기본값은 탭 문자입니다 텍스트 모드, 쉼표CSV모드.

NULL String

널 값을 나타내는 문자열. 기본값은\ n15114_15189CSV모드. 빈 문자열을 선호 할 수 있습니다 원하지 않는 경우에도 텍스트 모드에서도 빈 줄과 널을 구별합니다.

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

CSV

쉼표를 선택하여 분리 된 값 (CSV) 모드.

헤더

파일에 헤더 라인이 포함되어 있음을 지정합니다. 파일의 각 열의 이름. 출력에서 첫 번째 줄 테이블의 열 이름과 입력시 첫 번째 줄은 무시됩니다.

QUOTE

인용문을 지정CSV모드. 기본값은 이중 인용입니다.

탈출

a 앞에 나타나야하는 문자를 지정합니다QUOTE데이터 문자 값CSV모드. 기본값은입니다.QUOTE값 (보통 이중 쿼트).

힘 견적

inCSV 복사 에게모드, 모든 사람에게 사용하도록 인용하는 힘 비NULL지정된 각 값 열.null출력은 절대 아닙니다 인용.

힘이 아님

inCSV 복사 에서모드는 지정된 각 열을 마치 마치 처리합니다 인용되었고 따라서NULL값. 기본 NULL 문자열의 경우CSV모드 (''),이 결 측값을 0 길이로 입력하게합니다 문자열.

노트

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

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

당신은 값이있는 테이블에 선정 된 권한이 있어야합니다. 읽기복사및 권한을 삽입하십시오 값이 삽입되는 테이블복사.

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

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

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

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

사설 토토입력 및 출력에 의해 영향을받습니다Datestyle. 이식성을 보장합니다 다른사설 토토설치 비 디폴트를 사용할 수 있습니다Datestyle설정,Datestyle로 설정해야ISO사용 전복사.

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

파일 형식

텍스트 형식

언제사설 토토BINAGE또는CSV옵션, 데이터를 읽거나 쓰여진 데이터는 한 줄이있는 텍스트 파일입니다. 테이블 행 당. 연속의 열은 구분 기호로 분리됩니다 성격. 열 값 자체는 생성 된 문자열입니다 출력 함수 또는 입력 함수에 허용됩니다. 각 속성의 데이터 유형. 지정된 널 문자열이 사용됩니다 널 인 열 대신복사 에서입력 파일의 라인이 있으면 오류가 발생합니다. 예상보다 더 많은 열을 포함합니다. 만약에OIDS지정되어 있으며 OID는 읽거나 쓰여집니다 사용자 데이터 열 이전의 첫 번째 열.

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

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

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

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

시퀀스 대표
\ b Backspace (ASCII 8)
\ f 양식 피드 (ASCII 12)
\ n Newline (ASCII 10)
\ r 캐리지 리턴 (ASCII 13)
\ t 탭 (ASCII 9)
\ V 수직 탭 (ASCII 11)
\Digits 백 슬래시 뒤에 1 ~ 3 개의 옥탈 숫자가 이어집니다 해당 숫자 코드로 문자를 지정
\ xDigits backslashx하나 또는 두 개의 16 진수 숫자는 그와 함께 캐릭터를 지정합니다. 숫자 코드
현재,복사절대 Octal 또는 Hex Fight Backslash 시퀀스를 방출하지만 사용합니다. 해당 제어 문자에 대해 위에 나열된 다른 시퀀스.

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

응용 프로그램이 생성하는 것이 좋습니다사설 토토데이터 변환 데이터 신형 및 캐리지가로 돌아갑니다.\ n\ r각각 시퀀스. 현재 데이터 캐리지 리턴을 대표 할 수 있습니다. 백 슬래시 및 캐리지 리턴 및 데이터 신규 라인을 나타 내기 위해 백 슬래시와 뉴 라인으로. 그러나 이러한 표현 향후 릴리스에서는 허용되지 않을 수 있습니다. 그들은 또한 높습니다 부패에 취약한 경우사설 토토파일은 다른 컴퓨터에서 전송됩니다 (예 : UNIX에서 Windows 또는 그 반대에 이르기까지).

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

CSV 형식

이 형식은 쉼표를 가져오고 내보내는 데 사용됩니다. 분리 된 값 (CSV) 파일 형식 사용 스프레드 시트와 같은 다른 많은 프로그램에 의해. 대신 에스케이프사설 토토's 표준 텍스트 모드는 공통 CSV를 생성하고 인식합니다. 탈출 메커니즘.

각 레코드의 값은에 의해 분리됩니다.Delimiter캐릭터. 값에 포함 된 경우 Delimiter 캐릭터,QUOTE캐릭터,NULL문자열, 캐리지 리턴 또는 라인 피드 문자, 전체 값은 접두사에 의해 접두사 및 접미사QUOTE캐릭터 및 A의 값 내에서 발생합니다QUOTE캐릭터 또는탈출캐릭터는 탈출에 앞서 있습니다 성격. 당신은 또한 사용할 수 있습니다힘 인용하다비 출력시 인용문을 강제로NULL특정 열의 값.

theCSV형식에는 표준 방법이 없습니다 A를 구별하려면NULL빈 문자열.사설 토토's사설 토토인용하여 이것을 처리합니다. 에이NULL출력NULL문자열은 인용되지 않으며, 데이터가 있습니다 일치하는 가치NULL문자열입니다 인용. 따라서 기본 설정을 사용하여 Anull인용되지 않은 빈 문자열로 작성되었습니다. 빈 문자열은 이중 인용문으로 작성되는 동안 (""). 읽기 값은 비슷한 규칙을 따릅니다. 너 사용할 수 있습니다힘이 아님방지하려면NULL특정에 대한 입력 비교 열.

​​Backslash가 특별한 캐릭터가 아니기 때문에CSV형식,\., 데이터 종료 마커도 나타날 수 있습니다 데이터 값. 잘못 해석을 피하기 위해 A\.데이터 값은 a 라인은 출력 및 입력시 자동 인용됩니다. 인용 된 것은 데이터 종료 마커로 해석되지 않습니다. 당신이 다른 응용 프로그램에서 생성 된 파일을로드하고 있습니다. 단일 인용되지 않은 열이며 값이 일 수 있습니다.\., 당신은 그 값을 입력 파일.

참고 :inCSV모드, 모두 캐릭터는 중요합니다. 둘러싸인 인용 된 가치 공백 또는 이외의 캐릭터Delimiter에는 해당 문자가 포함됩니다. 시스템에서 데이터를 가져 오면 오류가 발생할 수 있습니다. 패드​​CSV공백이있는 선 약간의 고정 너비까지. 그러한 상황이 당신에게 발생한다면 전처리가 필요할 수 있습니다.CSV가져 오기 전에 후행 공백을 제거하려면 파일 데이터로의 데이터사설 토토.

참고 :CSV 모드는 모두 인식하고 생산합니다 내장 된 캐리지가 포함 된 인용 된 값이있는 CSV 파일 반환 및 선 피드. 따라서 파일은 엄격하게 파일이 아닙니다 텍스트 모드 파일과 같은 테이블 행 행입니다.

참고 :많은 프로그램이 이상하고 때때로 CSV 파일이 있으므로 파일 형식이 더 표준보다 컨벤션. 따라서 당신은 일부를 만날 수 있습니다 이 메커니즘을 사용하여 가져올 수없는 파일 및사설 토토파일을 생성 할 수 있습니다 다른 프로그램은 처리 할 수 ​​없습니다.

이진 형식

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

파일 헤더

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

서명

11 바이트 시퀀스pg사설 토토 \ n \ 377 \ r \ n \ 0- 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). 향후 확장이 추가 될 것으로 예상됩니다 컬럼 당 형식 코드를 허용하는 헤더 필드 지정.

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

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

파일 트레일러

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

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

예제

다음 예제는 수직 막대 (|) 필드로 Delimiter :

Delimiter '|';와 함께 stdout으로 국가를 복사합니다.

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

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

이름이 시작된 국가 만 파일에 복사하려면 'A'자동 삭제되는 임시 테이블 사용 :

시작;
임시 테이블을 만듭니다 a_list_countries as
    Country_name이 'A%'와 같은 국가에서 *를 선택하십시오.
a_list_countries를 '/usr1/proj/bray/sql/a_list_countries.사설 토토'에 복사합니다.
롤백;

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

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

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

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

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의 문 기준.

다음 구문이 전에 사용되었습니다사설 토토버전 7.3이며 여전히입니다 지원 :

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

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