수색…


통사론

  1. LOAD DATA [LOW_PRIORITY | 동시] [로컬] INFILE 'file_name'
  2. INTO TABLE tbl_name
  3. [CHARACTER SET charset]
  4. [{FIELDS | COLUMNS} [ 'string'에 의해 종료 됨] [[OPTIONALLY] 'ENCLOSED BY'char ']]
  5. [LINES [STARTING BY 'string'] [TERMINATED BY 'string']]
  6. [IGNORE number {LINES | ROWS}]
  7. [(col_name_or_user_var, ...)]
  8. [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;


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow