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개 열에 매핑합니다.
사용자 변수에 할당하고 테이블 열에 변수를 할당하지 않음으로써 입력 값을 무시할 수도 있습니다.
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);
@ 디미 :
무시하는 유일한 방법 @dummy
은 필드의 기본값을 로 설정하는 것 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'
ReferenceURL : https://stackoverflow.com/questions/2139069/how-to-skip-columns-in-csv-file-when-importing-into-mysql-table-using-load-data
'IT이야기' 카테고리의 다른 글
ReactJS this.state null (0) | 2021.09.16 |
---|---|
다른 JFrame을 닫지 않고 하나의 JFrame을 닫으셨습니까? (0) | 2021.09.16 |
쉘 스크립트에서 if elif fi 사용 (0) | 2021.09.16 |
영구 쿠키와 비영구 쿠키는 어떻게 만듭니까? (0) | 2021.09.16 |
C의 모든 공백에서 문자열 분할 (0) | 2021.09.15 |