数据库对数据格式的敏感度远高于Excel,需提前完成以下规范化处理:
表头一致性
user_id
,Excel列名不可写为用户ID
或UserID
。数据类型校准
| Excel数据类型 | 匹配数据库类型 | 注意事项 |
|—————|—————-|———-|
| 文本 | VARCHAR/TEXT | 避免数字前导零丢失(如工号001) |
| 数值 | INT/FLOAT | 删除千分位符(如1,000→1000) |
| 日期 | DATE/DATETIME | 统一格式为YYYY-MM-DD
|
| 布尔值 | TINYINT(1) | 转换为0/1代替“是/否” |
特殊字符处理
CHAR(10)
)、制表符(CHAR(9)
) 通过命令行导入
mysql -u root -p --local-infile=1 LOAD DATA LOCAL INFILE '/path/data.csv' INTO TABLE my_table FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY 'rn';
Workbench可视化操作
使用SSIS包
OPENROWSET函数
INSERT INTO dbo.MyTable SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;HDR=YES;Database=C:Data.xlsx', [Sheet1$])
COPY my_table FROM '/path/data.csv' DELIMITER ',' CSV HEADER;
日期格式报错
ERROR 1292 (22007): Incorrect date value
TEXT(A2, "yyyy-mm-dd")
函数强制格式化乱码问题
主键冲突
DELETE t1 FROM my_table t1 INNER JOIN my_table t2 WHERE t1.id < t2.id AND t1.unique_field = t2.unique_field;
工具名称 | 适用场景 | 核心功能 |
---|---|---|
Navicat | 跨数据库可视化导入 | 自动类型推断、实时数据预览 |
Pentaho Kettle | 大数据量ETL处理 | 并行加载、异常数据隔离 |
Python脚本 | 定制化清洗(正则匹配) | 使用pandas +sqlalchemy 库 |
通过标准化文件预处理、选择适配的导入方式,以及采用自动化工具,可降低人工干预风险,建议在正式导入前使用LIMIT 100
子句进行小批量验证,确保数据完整性。