2010년 4월 22일 목요일

Mysql 데이터 파일과 연동하기

데이터 파일로 내보내기
mysql >SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
FROM test_table;


파일에서 데이터 가져오기
mysql> load data local infile 'C:\\경로명\\파일명‘ replace into table 테이블명;
















• SQL 사용으로 데이타 입력
• SQL 사용으로 데이타 출력
• 데이터베이스 백업 클라이언트인 "mysqldump'를 사용하여 출력
• 클라이언트 "mysqlimport"를 사용하여 입력
• SOURCE 명령어로 데이타 입력

17-1. 데이타 입력과 출력

• 사용 가능한 입/출력 동작 타입
• 출력 데이타
- 백업에 중요
- 정기적으로 수행
- 일관된/의미있는 이름 지어진 실행
- 만료된 백업 파일
- 정기적인 시스템 백업 포함
- 데이터베이스 복사를 위해 사용

17-2. SELECT/INTO OUTFILE를 사용하여 데이타 출력

• SELECT로 INTO OUTFILE
- 파일에 결과를 직접 기록
- MySQL 다른 특정 경로가 없다면 데이터베이스 data 디렉토리 파일경로로 간주함
mysql> SELECT* INTO OUTFILE‘C:/City.txt’FROM City;

• INTO OUTFILE는 SELECT 동작으로 변함
- 파일은 네트워크 상의 클라이언트를 대신해 호스트 서버에 기록됨,
- 서버 호스트에 새 파일을 쓰기 위한 원인 서버임
- 파일은 퍼미션 액세스를 하는 파일시스템에 의해 생성됨
- 파일은 구문에 의해 선택된 한 열을 하나의 라인으로 포함



17-3. 데이타 파일 형식 Specifier 사용

• 기본 Specifier로 INTO OUTFILE와 SELECT
- 탭(Tab)과 뉴라인 종결자(terminator) "\n"
• 모든 컬럼을 위해 Specifier을 변경 할 수 있음
– 문법
FIELDS
TERMINATED BY 'string‘
ENCLOSED BY 'char'
ESCAPED BY 'char‘
LINES TERMINATED BY 'string‘)
– FIELDS 절은 어떤 라인 안에 데이터 값을 정의
– LINES 절은 레코드 경계가 발생되는 곳을 지적
– 만약 특정되지 않았다면, TERMINATED BY, ENCLOSED BY, ESCAPED BY 는 기본으로 사용

• 종결자(terminator) 정의
• 라인 종결자(terminator) Specifier
– 뉴라인 캐릭터는 기본임
• CSV 형식 텍스트 파일
mysql> SELECT * INTO OUTFILE 'C:/City.csv'
-> FIELDS TERMINATED BY','
-> ENCLOSED BY '"'
-> LINES TERMINATED BY '\r'
-> FROM City;


17-4. LOAD DATA INFILE 입력

• LOAD DATA INFILE 사용
LOAD DATA INFILE ‘C:/City.txt’ INTO TABLE City;
• SELECT...INTO OUTFILE와 비슷한 절과 형식의 Specifier
• MySQL서버 호스트의 위치된 파일로 간주
- 데이터베이스 data 디렉토리 안
• 탭(Tab)으로 구문 혹은 콤마로 파일 분리
• 파일 입력에 관해 알려진 특징
• CSV
LOAD DATA INFILE‘C:/City.txt' INTO TABLE City
FIELDS TERMINATED BY',‘
ENCLOSED BY'"'
LINES TERMINATED BY'\n';
• 클라이언트 호스트로 특정 데이타 파일 위치
LOAD DATA LOCAL INFILE‘C:/City.txt' INTO TABLE City;
• 넘기거나 옮겨진 컬럼 값
mysql> LOAD DATA INFILE'C:/City.txt' INTO TABLE City
-> IGNORE 2 LINES;
– 원래 2233 열에서 줄어듬
• LOAD DATA INFILE 와 중복 레코드
– INSERT와 REPLACE로 중복 레코드를 억제할 수 있음
– 동작은 약간의 차이가 있음
– IGNORE와 REPLACE는 상호간에 실행됨
• 정보는 LOAD DATA INFILE에 의해 공급
Records 입력 레코드의 수
Deleted 대체될 레코드의 수
Skipped 무시될 레코드의 수
Warnings 입력 파일에서 발견된 문제 수

17-5. ‘mysqldump’로 출력

• 테이블 컨텐츠를 출력(덤프)를 위한 MySQL 유틸리티
- 전체 구조
- 오직 데이타만
- 오직 테이블 구조만
- 표준 형식
- 최적화된 속도를 위한 MySQL 특성
- 압축
• mysqldump 활용의 3가지 방법
shell> mysqldump[옵션] 데이타베이스명[테이블]
shell> mysqldump[옵션] --databases 데이타베이스명1[데이타베이스명2...]
shell> mysqldump[옵션] --all-databases
• 데이타베이스 익스포트(Export)
shell> mysqldump world
• 다중 테이블 익스포트(Export)
shell> mysqldump world City Country
• 다중 데이터베이스 익스포트(Export)
shell> mysqldump –all-databases (or –A)
shell> mysqldump --databases world db2
• 연산자 방향을 사용해서 텍스트 파일로 익스포트(Export)
shell> mysqldump–uroot –pworld> C:/world_dump.sql
• 파일에 테이블과 데이타를 재생성하기 위해 필요한 명령어 포함
• 데이터베이스 안에 특정 테이블을 익스포트(Export)
shell> mysqldump–uroot –pworld CountryLanguage
> C:/CountryLanguage.sql



17-6. 'mysqlimport'로 임포트(import)

• Load Data Files 테이블로 집어 넣는 MySQL 유틸리티
• 명령어 라인은 LOAD DATA INFILE로 작동
• 일반 문법
shell> mysqlimport 옵션 데이타베이스명 입력파일...
• 테이블 명과 파일명 매치
• 테이블은 이미 존재해야만 함
• mysqlimport 옵션
• --help
• --lines-terminated-by=string
• --fields-terminated-by=string
• --fields-enclosed-by=char
• --ignore or –replace
• --local
shell> mysqlimport --lines-terminated-by="\r\n" world City.txt
shell> mysqlimport --fields-terminated-by=,
--lines-terminated-by="\r" world City.txt
shell> mysqlimport--fields-enclosed-by='"' world City.txt

17-7. MySQL 명령어 파일로 임포트(import)

• 테이블 데이타 임포트(import)
shell> mysql –u root world • 데이타 로딩
SOURCE C:/CountryLanguage.sql

댓글 없음:

댓글 쓰기