MySQL 데이터 내보내기
MySQL에서는 SELECT...INTO OUTFILE 문을 사용하여 간단히 데이터를 텍스트 파일로 내보낼 수 있습니다.
SELECT ... INTO OUTFILE 문을 사용하여 데이터 내보내기
다음 예에서는 tutorials_tbl 데이터 테이블의 데이터를 /tmp/tutorials.txt 파일로 내보냅니다.
mysql> SELECT * FROM tutorials_tbl -> INTO OUTFILE '/tmp/tutorials.txt';
명령 옵션을 통해 지정된 데이터 출력 형식을 설정할 수 있습니다. 다음 예는 CSV 형식으로 내보내는 것입니다.
mysql> SELECT * FROM passwd INTO OUTFILE '/tmp/tutorials.txt' -> FIELDS TERMINATED BY ',' ENCLOSED BY '"' -> LINES TERMINATED BY '\r\n';
다음 예에서는 파일이 생성되고 각 값은 쉼표로 구분됩니다. 이 형식은 많은 프로그램에서 사용할 수 있습니다.
SELECT a,b,a+b INTO OUTFILE '/tmp/result.text' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM test_table;
SELECT ... INTO OUTFILE 문에는 다음과 같은 속성이 있습니다.
LOAD DATA INFILE은 SELECT ... INTO OUTFILE, SELECT 구문의 역동작입니다. 데이터베이스의 데이터를 파일에 쓰려면 SELECT ... INTO OUTFILE을 사용하고, 파일을 다시 데이터베이스로 읽으려면 LOAD DATA INFILE을 사용합니다.
SELECT...INTO OUTFILE 'file_name' 형식의 SELECT를 사용하면 선택한 줄을 파일에 쓸 수 있습니다. 파일은 서버 호스트에 생성되므로 이 구문을 사용하려면 FILE 권한이 있어야 합니다.
출력은 기존 파일일 수 없습니다. 파일 데이터가 변조되는 것을 방지합니다.
파일을 검색하려면 서버에 로그인된 계정이 필요합니다. 그렇지 않으면 SELECT ... INTO OUTFILE이 아무런 효과가 없습니다.
UNIX에서는 파일이 읽기 가능하게 생성되며 권한은 MySQL 서버가 소유합니다. 즉, 파일을 읽을 수는 있지만 삭제할 수는 없을 수도 있습니다.
원시 데이터로 테이블 내보내기
mysqldump는 mysql에서 스토리지 데이터베이스를 전송하는 데 사용하는 유틸리티입니다. 주로 데이터베이스를 처음부터 다시 생성하는 데 필요한 CREATE TABLE INSERT 명령 등이 포함된 SQL 스크립트를 생성합니다.
mysqldump를 사용하여 데이터를 내보내려면 --tab 옵션을 사용하여 내보내기 파일에 지정된 디렉터리를 지정해야 합니다.
다음 예에서는 tutorials_tbl 데이터 테이블을 /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 *****
데이터베이스를 완전히 백업하는 경우 특정 테이블 이름을 사용할 필요가 없습니다. .
백업된 데이터베이스를 MySQL 서버로 가져와야 하는 경우 다음 명령을 사용하면 됩니다.
$ mysql -u root -p database_name < dump.txt password *****
你也可以使用以下命令将导出的数据直接导入到远程的服务器上,但请确保两台服务器是相通的,是可以相互访问的:</p> $ mysqldump -u root -p database_name \ | mysql -h other-host.com database_name