명령줄 경유로 csv를 mysql로 Import
매우 큰 .csv 파일(~4GB)을 mysql에 Import하려고 합니다.phpmyadmin을 사용할까 생각 중이었는데 최대 업로드 사이즈는 2MB입니다.누가 명령줄을 사용해야 한다고 했어요.
Import 방법은 http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680 입니다.
.csv 테이블의 첫 번째 행을 mysql 테이블의 열 이름으로 설정하려면 어떤 명령을 사용해야 합니까?이 옵션은 phpmyadmin을 통해 사용할 수 있으므로 mysql 명령줄 버전이어야 합니다.제발 도와주세요.감사해요.
- Raj.
이 명령어 실행
load data local infile 'file.csv' into table table
fields terminated by ','
enclosed by '"'
lines terminated by '\n'
(column1, column2, column3,...)
이 필드는 데이터를 저장해야 하는 실제 테이블 필드입니다.괄호로 둘러싸인 행과 끝 행은 옵션이며 Excel 내보내기 등 큰따옴표로 둘러싸인 컬럼이 있는 경우 도움이 됩니다.
자세한 내용은 설명서를 참조하십시오.
첫 번째 행을 테이블컬럼 이름으로 설정할 경우 행 읽기를 무시하고 명령어에 값을 추가합니다.
이것을 시험해 보세요.
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 --columns='head -n 1 $yourfile' --ignore-lines=1 dbname $yourfile`
즉, 파일이 쉼표로 구분되어 세미콜론으로 구분되지 않은 경우입니다.그렇지 않으면sed
그걸 통해서도.
다음 방법으로 Import할 수 있습니다.
mysqlimport --ignore-lines=1 --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local -uroot -proot db_name csv_import.csv
주의: Csv 파일 이름과 테이블 이름은 같아야 합니다.
mysqlimport를 사용하여 헤더 행이 있는 csv를 Import하려면
--ignore-lines=N
(데이터 파일의 첫 번째 N 행을 무시합니다)
이 옵션은 링크된 페이지에 설명되어 있습니다.
다음과 같은 방법으로 입력할 수 있습니다.
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
이는 명령줄에서 직접 실행하거나 다수의 파일에 대해 이 작업을 수행해야 하는 경우 자동화를 위해 파이썬 또는 셸 스크립트에 내장할 수 있습니다.
csvsql에서는 csv의 구조에 따라 데이터베이스 테이블을 즉시 작성할 수 있습니다.따라서 csv의 첫 번째 행을 MySQL 테이블헤더로 자동 캐스팅하는 라이트 코드 방법입니다.
상세한 문서 및 기타 예는 https://csvkit.readthedocs.io/en/1.0.3/scripts/csvsql.html 를 참조해 주세요.
커맨드 라인이라는 것은 알지만, MySQL 워크벤치가 있고 csv가 너무 크지 않다면 간단하게 실행할 수 있습니다.
- 표에서 선택 *
- CSV 전체 복사
- Workbench의 쿼리 결과 섹션에 CSV 붙여넣기
- 좋은 결과를 기대하다
이것이 MySQL Workbench이기 때문에 최선의 희망을 말하는 것입니다.언제 터질지 몰라
리모트 서버상에서 이 작업을 실시하는 경우는, 다음과 같이 합니다.
mysql -h<server|ip> -u<username> -p --local-infile bark -e "LOAD DATA LOCAL INFILE '<filename.csv>' INTO TABLE <table> FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
제가 .-p
하는 것은 되기 때문에
이 창작한 과 같은 있습니다.csv
Windows에서 Microsoft Excel에서 파일을 내보내고 Linux 환경에서 동일한 파일을 가져오면 예기치 않은 결과가 나타납니다.
올바른 구문은 다음과 같습니다.
load data local infile 'file.csv' into table table fields terminated by ',' enclosed by '"' lines terminated by '\r\n'
는 here here here here here here here here here here 。'\r\n'
'\n
언급URL : https://stackoverflow.com/questions/6605765/importing-a-csv-into-mysql-via-command-line
'programing' 카테고리의 다른 글
일시적 수식어와 휘발성 수식어가 뭐죠? (0) | 2023.01.31 |
---|---|
MySql에 대한 Java 길이 (0) | 2023.01.31 |
구글 지도 V3에서 두 점 사이의 거리를 계산합니다. (0) | 2023.01.31 |
순서가 매겨지지 않은 두 리스트가 동일한지 확인합니다. (0) | 2023.01.31 |
팬더에서 데이터 프레임의 처음 세 행을 삭제합니다. (0) | 2023.01.31 |