약 60m 행의 크기가 20gigs 인 CSV 파일이 있는데, 이는 mysql 내에서 테이블에로드하고 싶습니다.은 mysql에 csv 파일을 효율적으로로드합니다.
로드를 시작하기 전에 복합 기본 키 (col_a, col_b)
으로 내 테이블을 정의했습니다.
내가 아래로 내 부하를 시작 한 다음 데이터 세트의 크기가 10g 주위에 도착 할 때까지,이 잘 작동하는 것 같았다
LOAD DATA LOCAL INFILE '/mypath/mycsv.csv'
INTO TABLE mytable
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
IGNORE 0 LINES
(@v1v, @v2v, @v3v, @v4v, @v5v, etc...)
SET
col_a = nullif(@v1v,''),
col_b = nullif(@v2v,''),
col_c = nullif(@v3v,''),
col_d = nullif(@v4v,''),
col_e = nullif(@v5v,''),
etc...,
load_dttm = NOW();
하는로드 포인트는 크게 둔화, 어떤는 수도처럼 보였다 밤새도록 1 시간 정도 걸렸고 훨씬 더 커지지 않았습니다.
"큰"csv를 mysql에로드하는 더 효율적인 방법이 있습니까 (이 단어의 정의에 따라 다름).
내 즉각적인 생각은 다음과 같습니다
1) 내 복합 기본 키를 제거 만로드 2) 내가 알고있는 것처럼 작은 조각
에 CSV를 분해해야 후 적용해야 mysql은 주로 시스템 제약 조건에 의해 제한됩니다. 필자의 경우에는 문제가되어서는 안됩니다. Linux Red Hat 서버에서 "MemTotal : 396779348 kB"를 사용하고 있습니다! 그리고 테라 바이트의 공간.
이것은 처음으로 mysql을 사용했기 때문에 모든 답변에이 점을 명심하십시오.