LOAD DATA INFILE '数据文件路径' INTO TABLE 表名 FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;
步骤一:准备数据文件
数据文件必须是纯文本格式,字段之间用逗号或制表符分隔,每行一条记录。第一行如果是标题行,需要用IGNORE 1 LINES跳过。
步骤二:创建或确认表结构
确保目标表的字段类型和数据文件匹配。如果不匹配,加载会失败或数据错乱。
步骤三:设置MySQL权限
执行LOAD DATA前,需要给用户授予FILE权限:GRANT FILE ON *.* TO '用户名'@'主机' IDENTIFIED BY '密码';
步骤四:基本语法
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE '文件路径' [REPLACE | IGNORE] INTO TABLE 表名 [FIELDS [TERMINATED BY '字符串'] [OPTIONALLY] [ENCLOSED BY '字符'] [ESCAPED BY '字符']] [LINES TERMINATED BY '字符串'] [IGNORE 行数 LINES] [(列1,列2,...)]
技巧一:使用LOCAL避免权限问题
如果服务器不允许访问本地文件,用LOAD DATA LOCAL INFILE,从客户端加载数据。
技巧二:处理特殊字符
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\';这样能正确处理逗号和双引号。
技巧三:指定列顺序
如果文件列顺序和表不一致,用(col1,col2,col3)指定对应列。
实际案例
LOAD DATA LOCAL INFILE '/path/to/data.csv' INTO TABLE users FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES (name,email,@dummy) SET password = PASSWORD('default');
Q: LOAD DATA失败,错误Code 1045?
A: 检查FILE权限,或用LOCAL INFILE。
Q: 数据中有NULL怎么处理?
A: 用\N表示NULL值。
Q: 如何跳过错误行?
A: 用IGNORE关键字,继续加载其他行。
Q: CSV文件有标题行?
A: 加IGNORE 1 LINES跳过第一行。