Loading...
MySQL 9.5 Reference Manual 9.5의 9.4.3 Dumping Data in Delimited-Text Format with mysqldump의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
이 절에서는 mysqldump를 사용하여 구분자-텍스트 덤프 파일을 생성하는 방법을 설명합니다. 이러한 덤프 파일을 다시 로드하는 방법에 대한 정보는
Section 9.4.4, “Reloading Delimited-Text Format Backups”를 참조하십시오.
mysqldump를
--tab=dir_name
옵션과 함께 호출하면, _dir_name_을 출력 디렉터리로 사용하고 해당 디렉터리 안에 각 테이블을 두 개의 파일로 개별적으로 덤프합니다. 테이블 이름은 이들 파일의 기본 이름이 됩니다. t1이라는 이름의 테이블에 대해서는 파일 이름이 t1.sql과 t1.txt가 됩니다. .sql 파일에는 테이블에 대한 CREATE TABLE 문이 들어 있습니다.
.txt 파일에는 테이블 데이터가 들어 있으며, 테이블 행마다 한 줄씩 기록됩니다.
다음 명령은 db1 데이터베이스의 내용을 /tmp 디렉터리 안의 파일들로 덤프합니다:
1$> mysqldump --tab=/tmp db1
테이블 데이터가 들어 있는 .txt 파일은 서버에 의해 기록되므로, 서버를 실행하는 데 사용되는 시스템 계정이 소유하게 됩니다. 서버는 파일을 기록하기 위해
SELECT ... INTO OUTFILE를 사용하므로, 이 작업을 수행하려면
FILE 권한이 필요하며, 특정 .txt 파일이 이미 존재하면 에러가 발생합니다.
서버는 덤프된 테이블의 CREATE 정의를
mysqldump로 전송하고, mysqldump는 이를 .sql 파일에 기록합니다. 따라서 이러한 파일은
mysqldump를 실행하는 사용자가 소유하게 됩니다.
--tab는 로컬 서버를 덤프할 때만 사용하는 것이 가장 좋습니다. 리모트 서버와 함께 이 옵션을 사용하는 경우,
--tab 디렉터리는 로컬 호스트와 리모트 호스트 모두에 존재해야 하고, .txt 파일은 리모트 디렉터리(서버 호스트)에 있는 서버에 의해 기록되는 반면, .sql 파일은 클라이언트 호스트에 있는 로컬 디렉터리에서
mysqldump에 의해 기록됩니다.
mysqldump --tab의 경우, 서버는 기본적으로 테이블 데이터를 .txt 파일에 행당 한 줄씩, 컬럼 값 사이에는 탭을 두고, 컬럼 값 주위에는 따옴표를 사용하지 않으며, 라인 종료 문자로 뉴라인을 사용하여 기록합니다. (이는
SELECT ... INTO OUTFILE의 기본 설정과 동일합니다.)
데이터 파일을 다른 포맷으로 기록할 수 있도록,
mysqldump는 다음 옵션들을 지원합니다:
컬럼 값을 구분하는 문자열(기본값: 탭).
컬럼 값을 둘러싸는 데 사용할 문자(기본값: 없음).
비숫자 컬럼 값을 둘러싸는 데 사용할 문자(기본값: 없음).
특수 문자를 이스케이프하는 데 사용할 문자(기본값: 이스케이프 없음).
라인 종료 문자열(기본값: 뉴라인).
이 옵션들에 대해 지정하는 값에 따라, 명령줄에서 커맨드 인터프리터에 맞게 적절하게 값을 quoting 하거나 이스케이프해야 할 수 있습니다. 또는 hex 표기법을 사용하여 값을 지정할 수도 있습니다. 예를 들어,
mysqldump가 컬럼 값을 double quotation mark로 둘러싸도록 하려면,
--fields-enclosed-by
옵션의 값으로 double quote를 지정하면 됩니다. 그러나 이 문자는 종종 커맨드 인터프리터에서 특별한 의미를 가지므로 특별히 처리해야 합니다. 예를 들어, 유닉스에서는 double quote를 다음과 같이 quoting 할 수 있습니다:
1--fields-enclosed-by='"'
어떤 플랫폼에서든, hex로 값을 지정할 수 있습니다:
1--fields-enclosed-by=0x22
여러 데이터 포맷팅 옵션을 함께 사용하는 경우가 일반적입니다. 예를 들어, 라인이 캐리지 리턴/뉴라인 쌍(\r\n)으로 종료되는 comma-separated values 포맷으로 테이블을 덤프하려면, 다음 명령을 사용합니다(한 줄로 입력):
1$> mysqldump --tab=/tmp --fields-terminated-by=, 2 --fields-enclosed-by='"' --lines-terminated-by=0x0d0a db1
테이블 데이터를 덤프할 때 데이터 포맷팅 옵션 중 하나라도 사용했다면, 나중에 데이터 파일을 다시 로드할 때 파일 내용이 올바르게 해석되도록 동일한 포맷을 지정해야 합니다.
9.4.2 Reloading SQL-Format Backups
9.4.4 Reloading Delimited-Text Format Backups