MySQL-데이터베이스 내보내기
테이블 데이터를 텍스트 파일로 내보내는 가장 간단한 방법은 SELECT...INTO OUTFILE 쿼리 결과를 서버 호스트의 파일로 직접 내보내는 문입니다.
SELECT ... INTO OUTFILE 문을 사용하여 데이터 내보내기
이 명령문의 구문은 일반 SELECT 명령 INTO OUTFILE filename끝에. 기본 출력 형식은 LOAD DATA 명령과 동일합니다. 따라서 다음 문은tutorials_tbl 테이블에 /tmp/tutorials.txt 탭으로 구분 된 줄 바꿈으로 끝나는 파일로.
mysql> SELECT * FROM tutorials_tbl
-> INTO OUTFILE '/tmp/tutorials.txt';
열과 레코드를 인용하고 구분하는 방법을 나타내는 다양한 옵션을 사용하여 출력 형식을 변경할 수 있습니다. CRLF로 끝나는 행이있는 CSV 형식으로 tutorial_tbl 테이블을 내보내려면 다음 코드를 사용하십시오.
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt'
-> FIELDS TERMINATED BY ',' ENCLOSED BY '"'
-> LINES TERMINATED BY '\r\n';
그만큼 SELECT ... INTO OUTFILE 다음과 같은 속성이 있습니다-
출력 파일은 MySQL 서버에서 직접 생성되므로 파일 이름은 서버 호스트에서 파일을 기록 할 위치를 나타내야합니다. 다음과 유사한 명령문의 LOCAL 버전은 없습니다.LOCAL 버전 LOAD DATA.
당신은 MySQL FILE 실행 권한 SELECT ... INTO 성명서.
출력 파일이 이미 존재하지 않아야합니다. 이것은 MySQL이 중요 할 수있는 파일을 막는 것을 방지합니다.
서버 호스트에 로그인 계정이 있거나 해당 호스트에서 파일을 검색 할 수있는 방법이 있어야합니다. 그렇지 않으면SELECT ... INTO OUTFILE 명령은 당신에게 가치가 없을 것입니다.
UNIX에서는 파일이 생성됩니다. world readableMySQL 서버가 소유하고 있습니다. 즉, 파일을 읽을 수는 있지만 삭제할 수는 없습니다.
테이블을 원시 데이터로 내보내기
그만큼 mysqldump프로그램은 테이블과 데이터베이스를 복사하거나 백업하는 데 사용됩니다. 테이블 출력을 다음 중 하나로 쓸 수 있습니다.Raw Datafile 또는 세트로 INSERT 테이블의 레코드를 다시 만드는 문.
테이블을 데이터 파일로 덤프하려면 다음을 지정해야합니다. --tab MySQL 서버가 파일을 작성할 디렉토리를 나타내는 옵션입니다.
예를 들어, tutorials_tbl 테이블에서 TUTORIALS 데이터베이스를 파일에 /tmp 다음과 같은 명령을 사용하십시오.
$ mysqldump -u root -p --no-create-info \
--tab=/tmp tutorials tutorials_tbl
password ******
SQL 형식으로 테이블 내용 또는 정의 내보내기
SQL 형식의 테이블을 파일로 내보내려면 아래 표시된 명령을 사용하십시오.
$ mysqldump -u root -p TUTORIALS tutorials_tbl > dump.txt
password ******
아래와 같은 내용이 담긴 파일이 생성됩니다.
-- MySQL dump 8.23
--
-- Host: localhost Database: TUTORIALS
---------------------------------------------------------
-- Server version 3.23.58
--
-- Table structure for table `tutorials_tbl`
--
CREATE TABLE tutorials_tbl (
tutorial_id int(11) NOT NULL auto_increment,
tutorial_title varchar(100) NOT NULL default '',
tutorial_author varchar(40) NOT NULL default '',
submission_date date default NULL,
PRIMARY KEY (tutorial_id),
UNIQUE KEY AUTHOR_INDEX (tutorial_author)
) TYPE = MyISAM;
--
-- Dumping data for table `tutorials_tbl`
--
INSERT INTO tutorials_tbl
VALUES (1,'Learn PHP','John Poul','2007-05-24');
INSERT INTO tutorials_tbl
VALUES (2,'Learn MySQL','Abdul S','2007-05-24');
INSERT INTO tutorials_tbl
VALUES (3,'JAVA Tutorial','Sanjay','2007-05-06');
여러 테이블을 덤프하려면 모두 이름을 지정한 다음 데이터베이스 이름 인수를 지정하십시오. 전체 데이터베이스를 덤프하려면 다음 코드 블록과 같이 데이터베이스 뒤에 테이블 이름을 지정하지 마십시오.
$ mysqldump -u root -p TUTORIALS > database_dump.txt
password ******
호스트에서 사용 가능한 모든 데이터베이스를 백업하려면 다음 코드를 사용하십시오.
$ mysqldump -u root -p --all-databases > database_dump.txt
password ******
--all-databases 옵션은 MySQL 3.23.12 버전에서 사용할 수 있습니다. 이 방법은 데이터베이스 백업 전략을 구현하는 데 사용할 수 있습니다.
테이블 또는 데이터베이스를 다른 호스트로 복사
한 MySQL 서버에서 다른 서버로 테이블 또는 데이터베이스를 복사하려면 mysqldump 데이터베이스 이름과 테이블 이름으로.
소스 호스트에서 다음 명령을 실행합니다. 이렇게하면 전체 데이터베이스가dump.txt 파일.
$ mysqldump -u root -p database_name table_name > dump.txt
password *****
위에서 설명한대로 특정 테이블 이름을 사용하지 않고 전체 데이터베이스를 복사 할 수 있습니다.
이제 다른 호스트에 ftp dump.txt 파일을 설치하고 다음 명령을 사용합니다. 이 명령을 실행하기 전에 대상 서버에 database_name을 작성했는지 확인하십시오.
$ mysql -u root -p database_name < dump.txt
password *****
중간 파일을 사용하지 않고이를 수행하는 또 다른 방법은 mysqldump의 출력을 네트워크를 통해 원격 MySQL 서버로 직접 보내는 것입니다. 소스 데이터베이스가있는 호스트에서 두 서버에 모두 연결할 수있는 경우 다음 명령을 사용하십시오 (두 서버 모두에 대한 액세스 권한이 있는지 확인하십시오).
$ mysqldump -u root -p database_name \
| mysql -h other-host.com database_name
mysqldump에서 명령의 절반은 로컬 서버에 연결하고 덤프 출력을 파이프에 씁니다. 명령의 나머지 절반은 other-host.com의 원격 MySQL 서버에 연결됩니다. 입력을 위해 파이프를 읽고 각 문을 other-host.com 서버로 보냅니다.