English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
MySQL에서 사용할 수 있습니다SELECT...INTO OUTFILE문장을 사용하여 데이터를 단순히 텍스트 파일에导出
다음 예제에서 데이터 테이블 w3codebox_tbl 데이터를导出到 /tmp/w3codebox.txt 파일에:
mysql> SELECT * FROM w3codebox_tbl -> INTO OUTFILE '"'/tmp/w3codebox.txt';
데이터 출력의 지정된 형식을 설정할 수 있는 명령 옵션을 사용할 수 있습니다. 다음 예제는 CSV 형식으로 데이터를 내보내는 예입니다:
mysql> SELECT * FROM passwd INTO OUTFILE '"'/tmp/w3codebox.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;
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 옵션을 사용하여 내보내기 파일의 지정된 디렉토리를 지정할 수 있습니다. 이 목표는 쓰일 수 있는 것여야 합니다。
다음 예제는 데이터 테이블 w3codebox_tbl 내보내기 /tmp 디렉토리에:
$ mysqldump -u root -p --no-create-info \ --tab=/tmp w3codebox w3codebox_tbl password ******
지정된 파일로 SQL 형식의 데이터를 내보내는 방법은 다음과 같습니다:
$ mysqldump -u root -p w3codebox w3codebox_tbl > 덤프.txt password ******
위 명령어로 생성된 파일 내용은 다음과 같습니다:
-- MySQL 덤프 8.23 -- -- 호스트: localhost 데이터베이스: w3codebox --------------------------------------------------------- -- 서버 버전 3.23.58 -- -- 테이블 `w`의 구조3codebox_tbl` -- CREATE TABLE w3codebox_tbl ( w3codebox_id int(11) NOT NULL auto_increment, w3codebox_title varchar(100) NOT NULL default '', w3codebox_author varchar(40) NOT NULL default '', submission_date date default NULL, PRIMARY KEY (w3codebox_id), UNIQUE KEY AUTHOR_INDEX (w3codebox_author) ) TYPE=MyISAM; -- -- 테이블 `w`의 데이터 덤프 중3codebox_tbl` -- INSERT INTO w3codebox_tbl VALUES (1Learn PHP2007-05-24'); INSERT INTO w3codebox_tbl VALUES (2Learn MySQL2007-05-24'); INSERT INTO w3codebox_tbl VALUES (3JAVA 튜토리얼2007-05-06');
전체 데이터베이스 데이터를 내보내려면 다음 명령어를 사용할 수 있습니다:
$ mysqldump -u root -p w3codebox > 데이터베이스 덤프.txt password ******
모든 데이터베이스를 백업하려면 다음 명령어를 사용할 수 있습니다:
$ mysqldump -u root -p --all-데이터베이스 > 데이터베이스 덤프.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 *****
또한, 내보낸 데이터를 원격 서버에 직접 가져오기 위해 다음 명령을 사용할 수 있습니다. 두 서버가 상호 연결되어 있고 서로 접근할 수 있어야 합니다:
$ mysqldump -u root -p database_name \ | mysql -h other-host.com database_name
위 명령은 내보낸 데이터를 지정된 원격 호스트에 가져오기 위해 파이프를 사용했습니다.