我正在尝试在桌面上建立一个大型数据库(约100GB),其中一个csv文件约为40 GB。我的MySQL工作台执行查询大约30-60分钟,然后失去连接,并报告错误代码2013。
每GB的典型上传时间是多少? 我是否需要修改我的INNODB选项文件或其他参数?我似乎无法找出完美的设置...下面,我列出了LOAD DATA代码以供参考。
LOAD DATA LOCAL INFILE '/Users/ED/desktop/mirror2/CHARTEVENTS.csv'
INTO TABLE CHARTEVENTS
FIELDS TERMINATED BY ',' ESCAPED BY '\\' OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(@ROW_ID,@SUBJECT_ID,@HADM_ID,@ICUSTAY_ID,@ITEMID,@CHARTTIME,@STORETIME,@CGID,@VALUE,@VALUENUM,@VALUEUOM,@WARNING,@ERROR,@RESULTSTATUS,@STOPPED)
SET
ROW_ID = @ROW_ID,
SUBJECT_ID = @SUBJECT_ID,
HADM_ID = IF(@HADM_ID='', NULL, @HADM_ID),
ICUSTAY_ID = IF(@ICUSTAY_ID='', NULL, @ICUSTAY_ID),
ITEMID = @ITEMID,
CHARTTIME = @CHARTTIME,
STORETIME = IF(@STORETIME='', NULL, @STORETIME),
CGID = IF(@CGID='', NULL, @CGID),
VALUE = IF(@VALUE='', NULL, @VALUE),
VALUENUM = IF(@VALUENUM='', NULL, @VALUENUM),
VALUEUOM = IF(@VALUEUOM='', NULL, @VALUEUOM),
WARNING = IF(@WARNING='', NULL, @WARNING),
ERROR = IF(@ERROR='', NULL, @ERROR),
RESULTSTATUS = IF(@RESULTSTATUS='', NULL, @RESULTSTATUS),
STOPPED = IF(@STOPPED='', NULL, @STOPPED);
答案 0 :(得分:1)
我不知道本地计算机和MySQL服务器之间连接的详细信息,但是由于多种原因,连接可能会中断。一种简单的解决方法是将40GB文件直接上传到运行MySQL的同一远程计算机,然后使用LOAD DATA
(不使用LOCAL
)。使用这种方法,LOAD DATA
语句应该花更少的时间来解析输入文件,而不再存在任何网络延迟来降低速度。