Nice programing

명령 줄을 통해 CSV를 mysql로 ​​가져 오기

nicepro 2021. 1. 9. 11:37
반응형

명령 줄을 통해 CSV를 mysql로 ​​가져 오기


매우 큰 .csv 파일 (~ 4GB)을 mysql로 ​​가져 오려고합니다. phpmyadmin 사용을 고려하고 있었지만 최대 업로드 크기는 2MB입니다. 누군가 나에게 명령 줄을 사용해야한다고 말했습니다.

나는 그것을 가져 오기 위해 다음 지시 사항을 사용하려고했습니다. http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680

.csv 테이블의 첫 번째 행을 mysql 테이블의 열 이름으로 설정하는 명령은 무엇입니까? 이 옵션은 phpmyadmin을 통해 사용할 수 있으므로 mysql 명령 줄 버전이어야합니다. 제발 도와주세요. 감사합니다.

-주권


이 명령을 시도하십시오

 load data local infile 'file.csv' into table table
 fields terminated by ','
 enclosed by '"'
 lines terminated by '\n'
 (column1, column2, column3,...)

여기에있는 필드는 데이터가 있어야하는 실제 테이블 필드입니다.로 묶인 줄과로 끝나는 줄은 선택 사항이며 Excel 내보내기 등과 같이 큰 따옴표로 묶인 열이있는 경우 도움이 될 수 있습니다.

자세한 내용은 설명서를 확인하십시오 .

첫 번째 행을 테이블 열 이름으로 설정하려면 읽기에서 행을 무시하고 명령에 값을 추가하면됩니다.


당신은 할 수 있습니다

mysqlimport --columns='head -n 1 $yourfile' --ignore-lines=1 dbname $yourfile`

즉, 파일이 쉼표로 구분되고 세미콜론으로 구분되지 않은 경우입니다. 그렇지 않으면 sed그것을 통과 해야 할 수도 있습니다.


이 시도:

mysql -uusername -ppassword --local-infile scrapping -e "LOAD DATA LOCAL INFILE 'CSVname.csv'  INTO TABLE table_name  FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"

mysqlimport를 사용하여 헤더 행이있는 csv를 가져 오려면 다음을 추가하십시오.

--ignore-lines=N

(데이터 파일의 처음 N 줄 무시)

이 옵션은 링크 한 페이지에 설명되어 있습니다.


간단히 가져올 수 있습니다.

mysqlimport --ignore-lines=1 --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local -uroot -proot db_name csv_import.csv

참고 : Csv 파일 이름과 테이블 이름은 동일해야합니다.


다음과 같은 방법으로 넣을 수 있습니다.

LOAD DATA LOCAL INFILE 'C:/Users/userName/Downloads/tableName.csv' INTO TABLE tableName FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';


또 다른 옵션은 csvkit 라이브러리에서 csvsql 명령을 사용하는 것입니다.

명령 줄에서 직접 사용하는 예 :

csvsql --db mysql:///test --tables yourtable --insert yourfile.csv

이것은 명령 줄에서 직접 실행하거나 여러 파일에 대해이 작업을 수행해야하는 경우 자동화를 위해 Python 또는 셸 스크립트에 내장 할 수 있습니다.

csvsql을 사용하면 csv의 구조를 기반으로 즉석에서 데이터베이스 테이블을 만들 수 있으므로 csv의 첫 번째 행을 MySQL 테이블 헤더로 자동 캐스팅하는 간단한 코드 방식입니다.

전체 문서 및 추가 예제 : https://csvkit.readthedocs.io/en/1.0.3/scripts/csvsql.html

참조 URL : https://stackoverflow.com/questions/6605765/importing-a-csv-into-mysql-via-command-line

반응형