10 개의 열이 포함 된 CSV 파일이 있습니다. 해당 파일에서 일부 열만 선택하고 LOAD DATA INFILE
명령을 사용하여 MySQL 데이터베이스로로드하고 싶습니다 .
답변:
MySQL의 테이블에 데이터를로드하고 열을 지정합니다.
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE t1
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'
(@col1,@col2,@col3,@col4) set name=@col4,id=@col2 ;
@ col1,2,3,4는 csv 파일 열 (4라고 가정)을 보유하는 변수이며, id는 테이블 열입니다.
for i in range(1,100): print("@column",i,",",end="",sep="")
(field,names)
세미콜론이 작동하려면 끝에 세미콜론 을 넣어야합니다 .
데이터로드 infile 문에서 CSV의 열 이름을 지정합니다.
코드는 다음과 같습니다.
LOAD DATA INFILE '/path/filename.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(column_name3, column_name5);
여기서는 테이블에 두 개의 열 (열 이름으로 선택할 수 있음)에만 데이터를 추가합니다.
주의해야 할 것은 한 줄 (행) 당 두 개의 값이있는 CSV 파일 (filename.csv)이 있다는 것입니다. 그렇지 않으면 언급하십시오. 나는 다른 해결책이 있습니다.
감사합니다.
예:
ae.csv 파일의 내용 :
"Date, xpto 14"
"code","number","year","C"
"blab","15885","2016","Y"
"aeea","15883","1982","E"
"xpto","15884","1986","B"
"jrgg","15885","1400","A"
CREATE TABLE Tabletmp (
rec VARCHAR(9)
);
열 3 만 넣으십시오.
LOAD DATA INFILE '/local/ae.csv'
INTO TABLE Tabletmp
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 2 LINES
(@col1, @col2, @col3, @col4, @col5)
set rec = @col3;
select * from Tabletmp;
2016
1982
1986
1400
데이터베이스 테이블에 csv의 열 수보다 많은 열이있는 경우 다음과 같이 진행할 수 있습니다.
LOAD DATA LOCAL INFILE 'pathOfFile.csv'
INTO TABLE youTable
CHARACTER SET latin1 FIELDS TERMINATED BY ';' #you can use ',' if you have comma separated
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n'
(yourcolumn,yourcolumn2,yourcolumn3,yourcolumn4,...);
다음과 같은 오류가있는 경우 :
오류 코드 : 1290. MySQL 서버가 --secure-file-priv 옵션으로 실행 중이므로이 문을 실행할 수 없습니다.
이 명령을 실행하여 파일을로드 할 수있는 폴더를 확인할 수 있습니다.
SHOW VARIABLES LIKE "secure_file_priv";
그런 다음 해당 폴더의 파일을 복사하고 LOAD DATA LOCAL INFILE
대신 LOAD DATA INFILE
.
ERROR 1148 (42000): The used command is not allowed with this MySQL version
..