[MySQL][Backup n Recovery] mysqlimport 프로그램 제대로 파해치기

■ mysqlimport 프로그램 소개

커맨드 라인 인터페이스로 되어 있는 프로그램으로 LOAD Data SQL 같은 방법으로 데이터를 테이블에 로드합니다. mysql 프로그램에서 사용되는 LOAD DATA문법이며 구문을 알고 있다면 좀더 손쉽게 사용할 있습니다. LOAD DATA문은 블로그에서 별로 페이지로 제공하고 있습니다.

참고 URL : https://myinfrabox.tistory.com/18?category=804726

 

mysqlimport프로그램을 사용하면서 자주 사용하는 옵션이 있다면 my.cnf안에 [client], [mysqlimport] 그룹 옵션을 만들고 지원되는 옵션을 항목에 추가해서 사용할 있습니다. 이렇게 하면 터미널에서 실행할 추가 옵션을 굳이 기재하지 않더라도 환경을 읽어 들여 사용할 있습니다.

 

기본 사용방법은 다음과 같습니다.

사용법

shell> mysqlimport [options] db_name textfile1 [textfile2 ...]

한가지 기억할것이 있습니다. 위의 옵션에서 보시면 알겠지만 db_name 있는데 table_name 테이블 이름이 없습니다. 테이블 이름이 없는데 어떻게 데이터를 적재할 있을까요???

방법은 바로 테이블 이름과 파일이름을 맵핑시키는 것입니다. 예를들어 파일이름이 table_1이라면 db_name이름안에 테이블 이름과 같은 table_1 데이터를 가져옵니다. 파일이름이 table_1.txt라면 어떨까요?? 그래도 마찬가지로 table_1 가져옵니다. 확장자는 중요하지 않습니다. table_1.file, table_1.opt등등 어떤 확장명이 오더라도 파일 이름이 중요합니다. 파일이름에 테이블을 매핑시켜 데이터를 가져옵니다. 

 

 

 

옵션설명

--help, -? :

도움말을 출력합니다.

 

--character-sets-dir=dir_name :

캐릭터셋이 설치된 디렉토리를 나타냅니다.

 

--columns=column_list, -c column_list :

옵션은 쉼표로 구분 이름 목록을 값으로 사용합니다. 이름의 순서는 데이터 파일 열을 테이블 열과 일치시키는 방법을 나타냅니다.

 

--compress, -C :

가능하면 클라이언트와 서버사이의 모든 정보를 압축합니다.

 

--debug[=debug_options], -# [debug_options] : 

디버그 로그를 작성합니다. 일반적인 debug_option들의 문자는 d:t:o,file_name 입니다. 기본값은 d:t:o입니다.

 

--debug-check :

프로그램을 종료할 디버깅 정보를 출력합니다.

 

--debug-info :

프로그램을 종료할 디버깅정보, 메모리, CPU사용량을 출력합니다.

Print debugging information and memory and CPU usage statistics when the program exits.

 

--default-character-set=charset_name :

기본적으로 사용할 캐릭터 셋같은 캐릭터 이름을 지정합니다.

 

--delete, -D :

임포트하기 전에 테이블을 비웁니다.

 

--fields-terminated-by : 필드의 구분자 입니다.

--fields-enclosed-by :

필드를 구분지을 있는 시작과 문자 입니다.. '문자' -> 싱글쿼테이션(') 의미합니다.

--fields-optionally-enclosed-by : 필요할경우 필요한 구분자를 추가 합니다.

--fields-escaped-by : 해당필드를 뺍니다.

--lines-terminated-by : 라인() 구분자 입니다.

 

--force, -f :

오류를 무시합니다. 예를들어 테이블을 위한 텍스트 파일이 존재하지않으면 남아있는 다른 파일들을 계속 처리합니다. --force 없으면, mysqlimport 텍스트 이름에 맞는 테이블이 존재하지 않으면 종료됩니다.

 

--host=host_name, -h host_name

데이터를 임포트할 서버를 지정합니다.

 

 --ignore, -i

--replace 옵션과 유사합니다. --replace옵션을 참고하세요.

 

--ignore-lines=N

데이터 파일안에 처음부터 N라인까지 무시합니다.

 

 --local, -L

기본적으로 파일은 MySQL서버의 로컬에서  읽습니다. 만약 원격 클라이언트에서 서버로 덤프 데이터를 전송하려면 옵션을 사용해야 합니다.

 

 --lock-tables, -l

텍스트 덤프 파일을 처리하기 전에 모든 테이블을 잠급니다. 이렇게하면 모든 테이블이 서버에서 동기화됩니다.

 

 --low-priority

테이블을로드 LOW_PRIORITY 사용합니다. 이는 테이블 레벨 잠금 사용하는 스토리지 엔진 ( : MyISAM, MEMORY MERGE)에만 영향을줍니다.

 

--password[=password], -p[password]

사용자 암호를 입력합니다.

 

--port=port_num, -P port_num

접속 포트번호를 입력합니다.

For TCP/IP connections, the port number to use.

 

--print-defaults

프로그램 이름과 옵션 파일에서 얻는 모든 옵션을 인쇄합니다.

 

--protocol={TCP|SOCKET|PIPE|MEMORY}

서버 연결에 사용할 연결 프로토콜입니다. 다른 연결 매개 변수가 일반적으로 원하는 프로토콜 이외의 프로토콜을 사용할 유용합니다. 허용 가능한 값에 대한 자세한 내용은 4.2.4 명령 옵션을 사용하여 MySQL 서버에 연결 참조하십시오.

 

 --replace, -r

 

--replace --ignore 옵션은 고유 값에서 기존 행을 복제하는 입력 처리를 제어합니다. --replace 지정하면 동일한 고유 값을 가진 기존 행이 행으로 바뀝니다. --ignore 지정하면 고유 값에서 기존 행을 복제하는 입력 행을 건너 뜁니다. 옵션 하나를 지정하지 않으면 중복 값이 발견되면 오류가 발생하고 나머지 텍스트 파일은 무시됩니다.

 

 --silent, -s

사일런트 모드입니다. 에러가 발생할때만 출력됩니다.

Silent mode. Produce output only when errors occur.

 

 --socket=path, -S path

localhost, Unix 소켓 파일 또는 Windows에서 사용할 명명 파이프의 이름에 연결하는 경우 사용합니다.

 

 --user=user_name, -u user_name

MySQL 서버 적속 유저입니다.

 

 --use-threads=N

N개의 쓰레드를 생성해서 병렬로 파일을 로드합니다.

 

 --verbose, -v

verbose모드입니다. 프로그램에 관련된 모든 정보를 출력합니다.

Verbose mode. Print more information about what the program does.

 

 --version, -V

버전 정보를 출력합니다.

 

샘플 명령을 보여드립니다.

Here is a sample session that demonstrates use of mysqlimport:

 

 

 

예제

# 테이블 만들기

shell> mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test

# 편집기로 예제 데이터 만들기

shell> vi imptest.txt
100    Max Sydow  : 공백은 탭키로 만듭니다.
101    Count Dracula : 공백은 탭키로 만듭니다.
:wq

 

# 파일내용 확인해보기

shell> od -c imptest.txt
0000000   1   0   0  \t   M   a   x       S   y   d   o   w  \n   1   0
0000020   1  \t   C   o   u   n   t       D   r   a   c   u   l   a  \n
0000040

 

 

# 원격 클라이언트에서 수행하기

반드시 --local 옵션을 입력해야 합니다.

shell> mysqlimport --local test imptest.txt
test.imptest: Records: 2  Deleted: 0  Skipped: 0  Warnings: 0

 

# 확인

shell> mysql -e 'SELECT * FROM imptest' test
+------+---------------+
| id   | n             |
+------+---------------+
|  100 | Max Sydow     |
|  101 | Count Dracula |
+------+---------------+

Designed by JB FACTORY