복사 - 파일과 테이블 사이의 데이터 복사
롤 토토table_name
[(column_name
[, ...])]filename
' |명령
' |옵션
[, ...])]조건
]table_name
[(column_name
[, ...]) | (쿼리
)filename
' |명령
' |옵션
[, ...])여기서옵션
|형식Format_name
동결 [부울
]delimiter_character
'null_string
'default_string
'부울
| 성냥 ]QUOTE_CHARACTER
'Escape_character
'column_name
[, ...]) | *column_name
[, ...]) | *column_name
[, ...]) | *ERROR_ACTION
인코딩 'encoding_name
'Verbosity
롤 토토
간에 데이터 이동postgresql표 및 표준 파일 시스템 파일.복사
테이블의 내용을 복사합니다to파일, while롤 토토 from
데이터 사본From테이블에 파일 (이미 테이블에있는 모든 것에 데이터를 추가).복사
a의 결과도 복사 할 수 있습니다.select
쿼리.
열 목록이 지정된 경우복사
지정된 열의 데이터 만 파일에 복사합니다. 을 위한롤 토토 from
, 파일의 각 필드는 순서대로 지정된 열에 삽입됩니다. 표에 지정되지 않은 표 열롤 토토 from
열 목록은 기본값을받습니다.
롤 토토
파일 이름으로 지시postgresql서버 파일에서 직접 읽거나 쓸 수 있습니다. 파일은에 의해 액세스 할 수 있어야합니다.postgresqluser (사용자 ID 서버가 실행되는 사용자 ID)이며 이름은 서버의 관점에서 지정되어야합니다. 언제프로그램
지정되고 서버는 주어진 명령을 실행하고 프로그램의 표준 출력에서 읽거나 프로그램의 표준 입력에 씁니다. 명령은 서버의 관점에서 지정되어야하며에 의해 실행 될 수 있어야합니다.postgresql사용자. 언제Stdin
또는stdout
지정되어 있고, 데이터는 클라이언트와 서버 간의 연결을 통해 전송됩니다.
각 백엔드 실행롤 토토
진행 상황을보고합니다PG_STAT_PROGRESS_롤 토토
보기. 보다섹션 27.4.3자세한 내용.
기본적으로롤 토토
처리 중에 오류가 발생하면 실패합니다. 전체 파일을로드하는 최상의 효과가 필요한 사용 사례의 경우on_error
조항을 사용하여 다른 동작을 지정할 수 있습니다.
table_name
기존 테이블의 이름 (선택적으로 스키마 자격).
column_name
복사 할 열의 선택적 목록. 열 목록이 지정되지 않으면 생성 된 열을 제외한 테이블의 모든 열이 복사됩니다.
쿼리
A select
, 값
, 삽입
, 업데이트
, 삭제
또는병합
결과를 복사 할 명령. 쿼리 주변에는 괄호가 필요합니다.
for삽입
, 업데이트
, 삭제
및병합
쿼리 a반환
절의 조항이 제공되어야하며 대상 관계에는 조건부 규칙이 없어야합니다.또한
규칙 또는 an대신
여러 진술로 확장하는 규칙.
filename
입력 또는 출력 파일의 경로 이름. 입력 파일 이름은 절대적 또는 상대 경로 일 수 있지만 출력 파일 이름은 절대 경로 여야합니다.e ''
경로 이름에 사용 된 뒷면 슬래시를 문자열 및 두 배로 늘립니다.
프로그램
실행하라는 명령. 안에롤 토토 from
, 입력은 명령의 표준 출력에서 읽습니다.복사
, 출력은 명령의 표준 입력에 기록됩니다.
명령은 쉘에 의해 호출되므로 신뢰할 수없는 소스에서 나오는 인수를 전달 해야하는 경우 쉘에 대한 특별한 의미를 가질 수있는 특수 문자를 벗기거나 탈출해야합니다. 보안상의 이유로, 고정 된 명령 문자열을 사용하거나 최소한 사용자 입력을 포함하지 않는 것이 가장 좋습니다.
Stdin
입력이 클라이언트 응용 프로그램에서 제공되는 것을 지정합니다.
stdout
출력이 클라이언트 응용 프로그램으로 이동하는 것을 지정합니다.
부울
선택한 옵션을 켜거나 끄야하는지 여부를 지정합니다. 당신은 쓸 수 있습니다true
, on
또는1
옵션을 활성화하려면거짓
, OFF
또는0
비활성화하려면. 그만큼부울
값도 생략 할 수 있습니다.true
가 가정됩니다.
형식
읽거나 쓸 수있는 데이터 형식을 선택합니다 :텍스트
, CSV
(쉼표 분리 값) 또는Binary
. 기본값은텍스트
.
Freeze
|진공 동결
명령. 이는 초기 데이터 로딩을위한 성능 옵션으로 고안되었습니다.동결 복사
분할 된 테이블에서. 이 옵션은에서만 허용됩니다.롤 토토 from
.
다른 모든 세션은 데이터가 성공적으로로드되면 즉시 데이터를 볼 수 있습니다. 이것은 MVCC 가시성의 정상적인 규칙을 위반하고 사용자는 이것이 발생할 수있는 잠재적 문제를 알고 있어야합니다..
Delimiter
파일의 각 행 (줄) 내에서 열을 분리하는 문자를 지정합니다. 기본값은 텍스트 형식의 탭 문자입니다.CSV
형식. 이것은 하나의 1 바이트 문자 여야합니다.Binary
형식.
NULL
널 값을 나타내는 문자열을 지정합니다. 기본값은\ n
(backslash-n) 텍스트 형식의, intect inCSV
형식. 널을 빈 문자와 구별하지 않으려는 경우 텍스트 형식의 빈 문자열을 선호 할 수 있습니다.Binary
형식.
사용시롤 토토 from
,이 문자열과 일치하는 모든 데이터 항목은 널 값으로 저장되므로와 동일한 문자열을 사용해야합니다.복사
.
기본값
기본값을 나타내는 문자열을 지정합니다. 문자열이 입력 파일에있을 때마다 해당 열의 기본값이 사용됩니다.롤 토토 from
, 그리고 사용하지 않을 때만Binary
형식.
헤더
파일에 파일에 각 열의 이름이있는 헤더 라인이 포함되어 있는지 지정합니다. 출력에서 첫 번째 줄에는 테이블의 열 이름이 포함되어 있습니다.true
(또는 동등한 부울 값). 이 옵션이 설정된 경우매치
, 헤더 라인의 열의 번호와 이름은 테이블의 실제 열 이름과 순서대로 일치해야합니다. 그렇지 않으면 오류가 발생합니다.Binary
형식. 그만큼매치
옵션은에만 유효합니다롤 토토 from
명령.
QUOTE
데이터 값이 인용 될 때 사용할 인용 문자를 지정합니다. 기본값은 이중 인용입니다.CSV
형식.
탈출
와 일치하는 데이터 문자 앞에 나타나야하는 문자를 지정합니다QUOTE
값. 기본값은와 동일합니다.QUOTE
value (따라서 인용 문자가 데이터에 나타나면 두 배가되도록). 이것은 하나의 1 바이트 문자 여야합니다.CSV
형식.
Force_quote
모든 비에 대해 사용하도록 인용하는 힘NULL
지정된 각 열의 값.NULL
출력은 인용되지 않습니다. 만약에*
지정되어 있지 않습니다.NULL
값은 모든 열에 인용됩니다. 이 옵션은에서만 허용됩니다.복사
, 그리고 사용할 때만CSV
형식.
force_not_null
지정된 열의 값과 널 문자열과 일치하지 마십시오. NULL 문자열이 비어있는 기본 경우에서는 빈 값이 인용되지 않더라도 NULL이 아닌 0 길이 스트링으로 읽습니다.*
지정되어 있으며 옵션은 모든 열에 적용됩니다. 이 옵션은에서만 허용됩니다.롤 토토 from
, 그리고 사용할 때만CSV
형식.
Force_null
지정된 열의 값을 인용 된 경우에도 NULL 문자열과 일치시키고 일치가 발견되면 값을 설정하면NULL
. NULL 문자열이 비어있는 기본 케이스에서는 인용 된 빈 문자열을 NULL로 변환합니다.*
지정되어 있으며 옵션은 모든 열에 적용됩니다. 이 옵션은에서만 허용됩니다.롤 토토 from
, 그리고 사용할 때만CSV
형식.
on_error
열의 입력 값을 데이터 유형으로 변환하는 오류가 발생할 때 작동하는 방법을 지정합니다.ERROR_ACTION
값정지
명령에 실패하는 동안무시
의미는 입력 행을 폐기하고 다음 단계를 계속합니다. 기본값은정지
.
the무시
옵션은에만 적용됩니다롤 토토 from
언제형식
is텍스트
또는CSV
.
A 통지
무시 된 행 카운트가 포함 된 메시지롤 토토 from
적어도 하나의 행이 폐기 된 경우. 언제log_verbosity
옵션이 설정되었습니다Verbose
, a통지
입력 파일의 줄을 포함하는 메시지와 입력 변환이 실패한 열 이름이 각 폐기 행에 대해 배출됩니다.
인코딩
파일이 인코딩되어 있음을 지정합니다.encoding_name
. 이 옵션이 생략되면 현재 클라이언트 인코딩이 사용됩니다.
log_verbosity
a에 의해 방출되는 메시지의 양을 지정합니다롤 토토
명령 :기본값
또는Verbose
. 만약에Verbose
지정되고 처리 중에 추가 메시지가 방출됩니다.
현재롤 토토 from
on_error
옵션이 설정되었습니다무시
.
여기서
선택 사항여기서
조항은 일반적인 양식을 가지고 있습니다
여기서조건
여기서조건
유형의 결과를 평가하는 표현식입니다부울
. 이 조건을 충족하지 않는 행은 테이블에 삽입되지 않습니다.
현재, 하위 쿼리는 허용되지 않습니다여기서
표현 및 평가에는의 변경 사항이 표시되지 않습니다.롤 토토
그 자체 (이것은 표현식에 호출이 포함 된 경우입니다.휘발성
기능).
성공적인 완료시 A롤 토토
명령은 양식의 명령 태그를 반환
롤 토토count
thecount
복사 된 행 수입니다.
PSQL명령이없는 경우에만이 명령 태그를 인쇄합니다복사 ... stdout
또는 이와 동등한PSQLMeta-Command\ 롤 토토 ... to stdout
. 이것은 명령 태그를 방금 인쇄 한 데이터와 혼동하지 않도록하기위한 것입니다.
복사
보기가 아닌 일반 테이블에서만 사용할 수 있으며 자식 테이블이나 하위 파티션에서 행을 복사하지 않습니다. 예를 들어,롤 토토
동일한 행과 같은 행을 복사합니다테이블
to선택 * From Only
. 구문테이블
롤 토토 (select * from
상속 계층, 분할 된 테이블 또는보기에 모든 행을 덤프하는 데 사용할 수 있습니다.테이블
) to ...
롤 토토 from
평범한, 외국 또는 분할 된 테이블 또는 뷰와 함께 사용할 수 있습니다삽입 대신
트리거.
값을 읽는 테이블에 선택된 권한이 있어야합니다복사
, 그리고 값이 삽입되는 테이블에 권한을 삽입하십시오롤 토토 from
. 명령에 열거 된 열에 열 권한을 갖는 것으로 충분합니다.
테이블에 대한로드 레벨 보안이 활성화 된 경우 관련select
정책이 적용됩니다롤 토토
진술. 현재,테이블
to롤 토토 from
는로드 레벨 보안이있는 테이블에 대해 지원되지 않습니다. 동등한 사용삽입
대신 진술.
a에 명명 된 파일롤 토토
명령은 클라이언트 응용 프로그램이 아닌 서버에서 직접 읽거나 작성합니다. 따라서 클라이언트가 아닌 데이터베이스 서버 시스템에 상주하거나 액세스 할 수 있어야합니다.postgresql사용자 (사용자는 서버가 실행되는 사용자 ID)가 아니라 클라이언트가 아닙니다. 마찬가지로 명령은프로그램
클라이언트 응용 프로그램이 아닌 서버에서 직접 실행됩니다.postgresqluser.롤 토토
파일 또는 명령 이름은 데이터베이스 슈퍼 사용자 또는 역할 중 하나가 부여 된 사용자에게만 허용됩니다PG_READ_SERVER_FILES
, pg_write_server_files
또는pg_execute_server_program
, 서버가 액세스 할 권한이있는 프로그램을 읽거나 쓰거나 프로그램을 실행할 수 있으므로
혼동하지 마십시오롤 토토
withPSQL교육\ 롤 토토
. \ 롤 토토
호출stdin에서 복사
또는stdout에 복사
PSQL클라이언트. 따라서 파일 접근성 및 액세스 권한은 서버가 아닌 클라이언트에 따라\ 롤 토토
사용됩니다.
사용 된 파일 이름이 권장됩니다.롤 토토
항상 절대 경로로 지정됩니다. 이것은의 경우 서버에 의해 시행됩니다.복사
하지만롤 토토 from
상대 경로로 지정된 파일에서 읽을 수있는 옵션이 있습니다. 이 경로는 클라이언트의 작업 디렉토리가 아닌 서버 프로세스의 작업 디렉토리 (일반적으로 클러스터의 데이터 디렉토리)에 비해 해석됩니다.
명령 실행프로그램
Selinux와 같은 운영 체제의 액세스 제어 메커니즘에 의해 제한 될 수 있습니다.
롤 토토 from
대상 테이블에서 트리거를 호출하고 제약 조건을 확인합니다. 그러나 규칙을 호출하지 않습니다.
신원 열,롤 토토 from
명령은 항상 입력 데이터에 제공된 열 값을와 같이 작성합니다.삽입
옵션시스템 가치 재정의
.
롤 토토
입력 및 출력에 의해 영향을받습니다Datestyle
. 다른 사람에 대한 이식성을 보장하려면postgresql비 디폴트를 사용할 수있는 설치Datestyle
설정,Datestyle
로 설정해야합니다ISO
사용 전복사
. 또한 데이터를 덤프하지 않도록하는 것도 좋은 생각입니다.IntervalStyle
설정sql_standard
, 음의 간격 값이 다른 설정이 다른 서버에 의해 잘못 해석 될 수 있기 때문에IntervalStyle
.
입력 데이터는에 따라 해석됩니다.인코딩
옵션 또는 현재 클라이언트 인코딩 및 출력 데이터가 인코딩되어인코딩
또는 현재 클라이언트 인코딩, 데이터가 클라이언트를 통과하지 않고 서버에서 직접 파일에서 읽거나 기록됩니다.
the롤 토토 from
명령은 입력 행이 진행될 때 테이블에 물리적으로 삽입됩니다. 명령이 실패하면이 행은 삭제 된 상태로 남겨집니다.진공
낭비 된 공간을 복구하는 데 사용해야합니다.
Force_null
및force_not_null
동시에 동시에 사용할 수 있습니다. 이로 인해 인용 된 널 문자열을 널 값으로 변환하고 인용되지 않은 널 문자열을 빈 문자로 변환합니다.
언제텍스트
형식이 사용되며, 읽기 또는 작성된 데이터는 테이블 행당 한 줄의 텍스트 파일입니다. 연속의 열은 구분자 문자로 분리됩니다.롤 토토 from
입력 파일의 라인에 예상보다 열이 많거나 적은 열이 포함 된 경우 오류가 발생합니다.
데이터 끝은 백 슬래시-기간을 포함하는 단일 줄로 표시 될 수 있습니다 (\.
). 파일 끝이 완벽하게 잘 작동하기 때문에 파일에서 읽을 때 데이터 종료 마커가 필요하지 않습니다.
BackSlash 문자 (\
)에서 사용할 수 있습니다롤 토토
그렇지 않으면 행 또는 열 구분자로 취할 수있는 데이터 문자를 인용하는 데이터. 특히 다음 문자필수열 값의 일부로 나타나는 경우 백 슬래시가 앞서 나옵니다 : 백 슬래시 자체, Newline, Carriage Return 및 현재 분리기 문자..
지정된 널 문자열은에 의해 전송됩니다.복사
백 슬래시를 추가하지 않고; 거꾸로,롤 토토 from
백 슬래시를 제거하기 전에 널 문자열과 입력을 일치시킵니다. 따라서와 같은 널 문자열\ 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 개의 옥탈 숫자가 해당 숫자 코드와 바이트를 지정 |
\ x Digits |
backslashx 그 뒤에 하나 또는 두 개의 16 진수가 해당 숫자 코드로 바이트를 지정 |
현재,복사
옥탈 또는 육각형 백 슬래시 시퀀스를 방출하지는 않지만 해당 제어 문자에 대해 위에 나열된 다른 시퀀스를 사용합니다..
위 표에 언급되지 않은 다른 백 슬래시 캐릭터는 자체를 나타내도록 취할 것입니다. 그러나 불필요하게 백 슬래시를 추가하지 않아도됩니다. 실수로 데이터 끝 마커 (와 일치하는 문자열이 생성 될 수 있기 때문입니다.\.
) 또는 널 문자열 (\ n
기본적으로). 이 문자열은 다른 백 슬래시 처리가 완료되기 전에 인식됩니다.
응용 프로그램이 생성하는 것이 좋습니다롤 토토
데이터 변환 데이터 Newlines 및 Carriage Returns\ n
및\ r
각각 시퀀스. 현재 백 슬래시 및 캐리지 리턴에 의한 데이터 캐리지 리턴을 나타내고 백 슬래시 및 신규 라인에 의해 데이터 신규 라인을 나타낼 수 있습니다.롤 토토
파일은 다른 컴퓨터에서 전송됩니다 (예 : UNIX에서 Windows 또는 그 반대로)
모든 백 슬래시 시퀀스는 변환을 인코딩 한 후에 해석됩니다. Octal 및 Hex-Digit Backslash 시퀀스로 지정된 바이트는 데이터베이스 인코딩에서 유효한 문자를 형성해야합니다.
복사
Unix 스타일의 Newline (로 각 행을 종료합니다.“\ n
”). Microsoft Windows에서 실행되는 서버 대신 캐리지 return/newline ( 대신 출력“\ r \ n
”)하지만롤 토토
서버 파일로; 플랫폼 전체의 일관성을 위해stdout에 복사
항상 보낸다“\ n
”서버 플랫폼에 관계없이.롤 토토 from
Newlines, Carriage Returns 또는 Carriage Return/Newlines로 끝나는 선을 처리 할 수 있습니다. 백사 슬래시가없는 신형 또는 데이터와 같은 캐리지 리턴으로 인한 오류의 위험을 줄이려면롤 토토 from
입력의 줄 종료가 모두 비슷하지 않은지 불평합니다.
이 형식 옵션은 쉼표로 분리 된 값을 가져오고 내보내는 데 사용됩니다 (CSV
) 스프레드 시트와 같은 다른 많은 프로그램에서 사용하는 파일 형식. 에 사용 된 탈출 규칙 대신postgresql의 표준 텍스트 형식은 공통을 생성하고 인식합니다CSV
탈출 메커니즘.
각 레코드의 값은에 의해 분리됩니다.Delimiter
문자. 값에 Delimiter 문자가 포함 된 경우QUOTE
캐릭터,NULL
문자열, 캐리지 리턴 또는 선 피드 문자 인 경우 전체 값은 접두사에 의해 접두사로 표시되고 접미사됩니다.QUOTE
캐릭터 및 A의 값 내에서 발생하는 모든 사건QUOTE
캐릭터 또는탈출
캐릭터는 탈출 캐릭터가 선행됩니다. 당신은 또한 사용할 수 있습니다Force_quote
비 출력시 인용문을 강제로NULL
특정 열의 값.
theCSV
형식은 A를 구별하는 표준 방법이 없습니다NULL
빈 문자열의 값.postgresql's롤 토토
인용하여 이것을 처리합니다. 에이NULL
출력NULL
매개 변수 문자열은 인용되지 않으며, 비NULL
값 일치NULL
매개 변수 문자열이 인용됩니다. 예를 들어, 기본 설정으로 ANULL
인용되지 않은 빈 문자열로 작성되며 빈 문자열 데이터 값은 이중 인용문으로 작성됩니다 (""
). 읽기 값은 비슷한 규칙을 따릅니다.force_not_null
방지하려면NULL
특정 열에 대한 입력 비교. 당신은 또한 사용할 수 있습니다Force_null
인용 된 NULL 문자열 데이터 값을 변환하려면NULL
.
Backslash가 특별한 캐릭터가 아니기 때문에CSV
형식,\.
, 데이터 종료 마커도 데이터 값으로 나타날 수 있습니다. 잘못 해석을 피하기 위해 A\.
라인의 고독 항목으로 나타나는 데이터 값은 출력시 자동 인용되며 인용 된 경우 입력시 데이터 종료 마커로 해석되지 않습니다. 단일 인용되지 않은 열이 있고 값이가있는 다른 응용 프로그램에서 생성 된 파일을로드하는 경우\.
, 입력 파일에 해당 값을 인용해야 할 수도 있습니다.
inCSV
형식, 모든 문자는 중요합니다. 공백으로 둘러싸인 인용 된 가치 또는 이외의 다른 문자Delimiter
에는 해당 문자가 포함됩니다. 패드가있는 시스템에서 데이터를 가져 오면 오류가 발생할 수 있습니다.CSV
공백이 고정 너비로 선이있는 선. 그러한 상황이 발생하면 전처리해야 할 수도 있습니다.CSV
데이터를 가져 오기 전에 후행 공백을 제거하려는 파일postgresql.
CSV
형식은 모두 인식하고 생산합니다CSV
내장 된 캐리지 리턴 및 라인 피드가 포함 된 인용 된 값이있는 파일. 따라서 파일은 텍스트 형식 파일과 같이 테이블 행당 하나의 줄이 아닙니다.
많은 프로그램이 이상하고 때로는 왜곡을 생산합니다CSV
파일이므로 파일 형식은 표준보다 더 규칙입니다. 따라서이 메커니즘을 사용하여 가져올 수없는 일부 파일과롤 토토
다른 프로그램이 처리 할 수없는 파일을 생성 할 수 있습니다.
theBinary
형식 옵션은 모든 데이터를 텍스트가 아닌 이진 형식으로 저장/읽습니다. 텍스트보다 다소 빠릅니다CSV
형식이지만, 이진 형식 파일은 기계 아키텍처에서 휴대용이 덜 휴대용입니다.postgresql버전. 또한 이진 형식은 매우 데이터 유형에 따라 다릅니다.smallint
열을 읽고Integer
열, 텍스트 형식으로 잘 작동하지만
theBinary
파일 형식은 파일 헤더, 행 데이터가 포함 된 튜플 이상 및 파일 트레일러로 구성됩니다. 헤더와 데이터는 네트워크 바이트 순서입니다.
postgresql7.4 이전에 다른 바이너리 파일 형식을 사용하기 전에 릴리스.
파일 헤더는 15 바이트의 고정 필드로 구성되며 가변 길이 헤더 확장 영역으로 구성됩니다. 고정 필드는 다음과 같습니다.
11 바이트 시퀀스pgcopy \ n \ 377 \ r \ n \ 0
- 제로 바이트는 서명의 필수 부분입니다. (서명은 8 비트 클리어 전송에 의해 munged 파일을 쉽게 식별 할 수 있도록 설계되었습니다.이 서명은 종말 변환 필터, 제로 바이트, 높은 비트 또는 패리티 변경으로 인해 변경됩니다.).
32 비트 정수 비트 마스크 파일 형식의 중요한 측면을 나타냅니다. 비트는 0 (에서 번호가 매겨집니다.LSB) ~ 31 (MSB). 이 필드는 파일 형식에 사용 된 모든 정수 필드와 마찬가지로 네트워크 바이트 순서 (가장 중요한 바이트 우선)에 저장됩니다.
1 인 경우 OID가 데이터에 포함됩니다. 0이면.postgresql더 이상, 그러나 형식에는 여전히 표시기가 포함되어 있습니다.
32 비트 정수, 나머지 헤더의 바이트 길이는 자기를 포함하지 않습니다. 현재 이것은 0이고 첫 번째 튜플은 즉시 따릅니다.
헤더 확장 영역은 일련의 자체 식별 청크를 포함하도록 구상되었습니다. 플래그 필드는 독자들에게 확장 영역에있는 것을 알려주는 것이 아닙니다.
이 설계는 뒤로 호환 헤더 추가 (헤더 확장 덩어리 추가 또는 저음 깃발 비트를 설정) 및 비 백워드 호환 변경 (이러한 변경 사항을 알리기 위해 고차 플래그 비트를 설정하고 필요한 경우 확장 영역에 지원 데이터를 추가 할 수 있습니다).
각 튜플은 튜플의 필드 수의 16 비트 정수 수로 시작됩니다. (현재, 테이블의 모든 튜플은 같은 카운트를 가질 것이지만 항상 사실이 아닐 수도 있습니다.) 그런 다음 튜플의 각 필드마다 반복되면 32 비트 길이의 단어와 많은 바이트의 필드 데이터가 있습니다.
필드간에 정렬 패딩이나 기타 추가 데이터가 없습니다.
현재 이진 형식 파일의 모든 데이터 값은 이진 형식 (형식 코드 1)으로 가정됩니다. 향후 확장자는 컬럼 당 형식 코드를 지정할 수있는 헤더 필드를 추가 할 수 있습니다.
실제 튜플 데이터에 대한 적절한 이진 형식을 결정하려면postgresql소스, 특히*send
및*recv
각 열의 데이터 유형에 대한 함수 (일반적으로 이러한 함수는에 있습니다src/backend/utils/adt/
소스 분포의 디렉토리).
파일에 OID가 포함 된 경우 OID 필드는 즉시 필드 카운트 단어를 따릅니다. 필드 카운트에 포함되지 않는 것을 제외하고는 정상 필드입니다.postgresql.
파일 트레일러는 -1을 포함하는 16 비트 정수 단어로 구성됩니다. 이것은 튜플의 필드 카운트 단어와 쉽게 구별됩니다.
필드 카운트 단어가 -1이 아니거나 예상 된 열의 수가 아닌 경우 리더는 오류를보고해야합니다. 이것은 어떻게 든 데이터와 동기화에서 벗어나는 것에 대한 추가 점검을 제공합니다.
다음 예제는 수직 막대를 사용하여 클라이언트에게 테이블을 복사합니다 (|
) 필드 구분 기호로서 :
Country Country to Stdout (Delimiter '|');
파일의 데이터를에 복사하려면Country
테이블 :
'/usr1/proj/bray/sql/country_data'에서 컨트리를 복사합니다.
이름이 'a'로 시작하는 국가 만 파일에 복사하려면 :
롤 토토 (Country_Name이 'A%'와 같은 국가에서 선택 *)에서 '/usr1/proj/bray/sql/a_list_countries.copy';
압축 파일로 복사하려면 외부 압축 프로그램을 통해 출력을 파이프 할 수 있습니다.
롤 토토 COPIT CONITY 'GZIP> /usr1/proj/bray/sql/country_data.gz';
여기 테이블에 복사하는 데 적합한 데이터 샘플이 있습니다.Stdin
:
AF 아프가니스탄
각 라인의 공백은 실제로 탭 문자입니다.
다음은 동일한 데이터이며 이진 형식의 출력입니다. UNIX 유틸리티를 통해 필터링 한 후 데이터가 표시됩니다.OD -C
. 테이블에는 세 개의 열이 있습니다.char (2)
, 두 번째는 유형이 있습니다텍스트
그리고 세 번째는 유형이 있습니다Integer
. 모든 행은 세 번째 열에 널 값이 있습니다.
0000000 p g c o p y \ n 377 \ r \ n \ 0 \ 0 \ 0 \ 0 \ 0 \ 0
없음롤 토토
SQL 표준의 명령문.
다음 구문이 전에 사용되었습니다postgresql버전 9.0 및 여전히 지원됩니다 :
롤 토토table_name
[(column_name
[, ...])]filename
' |delimiter_character
' ]]null_string
' ]]QUOTE_CHARACTER
' ]]Escape_character
' ]]column_name
[, ...]]]]table_name
[(column_name
[, ...]) | (쿼리
)filename
' |delimiter_character
' ]]null_string
' ]]QUOTE_CHARACTER
' ]]Escape_character
' ]]column_name
[, ...] | *]]]
이 구문에서BINAGE
및CSV
a가 아니라 독립적 인 키워드로 취급됩니다형식
옵션.
다음 구문이 전에 사용되었습니다postgresql버전 7.3 및 여전히 지원됩니다 :
복사 [binary]table_name
from 'filename
' |delimiter_character
' ]]null_string
' ]]table_name
to 'filename
' |delimiter_character
' ]]null_string
' ]
문서에 올바르지 않은 내용이 있으면 일치하지 않습니다.이 양식문서 문제를보고하려면