source

LOAD DATA INFILE을 사용하여 MySQL 테이블로 가져올 때 CSV 파일의 열을 건너뛰는 방법은 무엇입니까?

factcode 2022. 9. 4. 14:25
반응형

LOAD DATA INFILE을 사용하여 MySQL 테이블로 가져올 때 CSV 파일의 열을 건너뛰는 방법은 무엇입니까?

11개의 열이 있는 CSV 파일과 9개의 열이 있는 MySQL 테이블이 있습니다.

CSV 파일은 다음과 같습니다.

col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11

MySQL 테이블은 다음과 같습니다.

col1, col2, col3, col4, col5, col6, col7, col8, col9

CSV 파일의 열 1~8을 MySQL 테이블의 처음 8열에 직접 매핑해야 합니다.그런 다음 CSV 파일의 다음 두 열을 건너뛰고 CSV 파일의 열 11을 MySQL 테이블의 열 9에 매핑해야 합니다.

현재 다음 SQL 명령을 사용하고 있습니다.

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'

그러나 위의 코드는 CSV 파일의 처음 9열을 MySQL 테이블의 9열에 매핑합니다.

Mysql 문서에서:

입력값을 사용자 변수에 할당하고 변수를 테이블 열에 할당하지 않음으로써 값을 폐기할 수도 있습니다.

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);

스텝 1. awk를 사용하여 변경한다.

cat file.txt |awk '{print $1,$2,$5...}'>new_file.txt

스텝 2. mysql에 로드합니다.

load data local infile 'new_file' into table t1(...)

아래 방법은 간단하지만 mysql의 하위 버전에서는 허용되지 않습니다.

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);

@deemi:

무시하기 위한 유일한 방법@dummy필드의 [Default]를 [Default]으로 설정합니다.AUTO INCREMENT이 필드를 건너뛰고 이렇게 코드화할 수 있습니다.

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column2, column3, column4, column5);

//필드명을 지정합니다.column1로 설정되어 있다.AUTO INCREMENT디폴트입니다.

코드 변경이 하나 더 있을 것 같습니다.

다음 SQL 명령어:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'

- 데이터 잘라내기 오류가 발생할 수 있습니다.

그래서 사용하는 것이 좋다.LINES TERMINATED BY '\r\n'대신LINES TERMINATED BY '\n'

따라서 코드는 다음과 같습니다.

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\r\n'

언급URL : https://stackoverflow.com/questions/2139069/how-to-skip-columns-in-csv-file-when-importing-into-mysql-table-using-load-data

반응형