MySQL
LOAD DATA INFILE
수색…
통사론
- LOAD DATA [LOW_PRIORITY | 동시] [로컬] INFILE 'file_name'
- INTO TABLE tbl_name
- [CHARACTER SET charset]
- [{FIELDS | COLUMNS} [ 'string'에 의해 종료 됨] [[OPTIONALLY] 'ENCLOSED BY'char ']]
- [LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
- [IGNORE number {LINES | ROWS}]
- [(col_name_or_user_var, ...)]
- [SET col_name = expr, ...]
LOAD DATA INFILE을 사용하여 많은 양의 데이터를 데이터베이스에로드
데이터베이스에로드 할 ';'로 구분 된 CSV가 있다고 가정하고 다음 예제를 고려하십시오.
1;max;male;manager;12-7-1985
2;jack;male;executive;21-8-1990
.
.
.
1000000;marta;female;accountant;15-6-1992
삽입 할 테이블을 만듭니다.
CREATE TABLE `employee` ( `id` INT NOT NULL ,
`name` VARCHAR NOT NULL,
`sex` VARCHAR NOT NULL ,
`designation` VARCHAR NOT NULL ,
`dob` VARCHAR NOT NULL );
다음 쿼리를 사용하여 해당 테이블에 값을 삽입하십시오.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,dob)
날짜 형식이 비표준 인 경우를 고려하십시오.
1;max;male;manager;17-Jan-1985
2;jack;male;executive;01-Feb-1992
.
.
.
1000000;marta;female;accountant;25-Apr-1993
이 경우 삽입하기 전에 dob
열의 형식을 변경할 수 있습니다.
LOAD DATA INFILE 'path of the file/file_name.txt'
INTO TABLE employee
FIELDS TERMINATED BY ';' //specify the delimiter separating the values
LINES TERMINATED BY '\r\n'
(id,name,sex,designation,@dob)
SET date = STR_TO_DATE(@date, '%d-%b-%Y');
LOAD DATA INFILE의이 예제는 사용 가능한 모든 기능을 지정하지는 않습니다.
LOAD DATA INFILE에 대한 자세한 내용은 여기를 참조 하십시오 .
CSV 파일을 MySQL 테이블로 가져 오기
다음 명령은 CSV 인용 및 이스케이프 규칙을 준수하면서 CSV 파일을 동일한 열이있는 MySQL 테이블로 가져옵니다.
load data infile '/tmp/file.csv'
into table my_table
fields terminated by ','
optionally enclosed by '"'
escaped by '"'
lines terminated by '\n'
ignore 1 lines; -- skip the header row
중복 된 데이터로드
LOAD DATA INFILE
명령을 사용하여 기존 데이터로 테이블을 채우는 경우 중복으로 인해 가져 오기가 실패하는 경우가 많습니다. 이 문제를 극복하는 몇 가지 가능한 방법이 있습니다.
LOAD DATA LOCAL
서버에서이 옵션을 사용하면 서버가 아닌 클라이언트 컴퓨터에있는 파일을로드하는 데 사용할 수 있습니다. 부작용은 고유 값에 대한 중복 행이 무시된다는 것입니다.
LOAD DATA LOCAL INFILE 'path of the file/file_name.txt'
INTO TABLE employee
LOAD DATA INFILE 'fname'REPLACE
replace 키워드를 사용하면 고유 한 키나 기본 키가 중복되어 기존 행이 새로운 행으로 바뀝니다
LOAD DATA INFILE 'path of the file/file_name.txt'
REPLACE INTO TABLE employee
LOAD DATA INFILE 'fname'무시
REPLACE
와는 반대로 기존 행은 보존되고 새 행은 무시됩니다. 이 동작은 위에서 설명한 LOCAL
과 유사합니다. 그러나 파일이 클라이언트 컴퓨터에 존재할 필요는 없습니다.
LOAD DATA INFILE 'path of the file/file_name.txt'
IGNORE INTO TABLE employee
중간 테이블을 통해로드
때때로 모든 복제본을 무시하거나 대체하는 것이 이상적인 옵션이 아닐 수도 있습니다. 다른 열의 내용에 따라 결정해야 할 수도 있습니다. 이 경우 가장 좋은 방법은 중개 테이블에로드하여 거기에서 전송하는 것입니다.
INSERT INTO employee SELECT * FROM intermediary WHERE ...
수입 수출
수입
SELECT a,b,c INTO OUTFILE 'result.txt' FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' FROM table;
수출
LOAD DATA INFILE 'result.txt' INTO TABLE table;