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 서버로 보냅니다.