小王刚接手公司新上的客户管理系统,想把老Excel里的客户名单批量导入进去,结果导入后发现电话号码全变成科学计数法,地址栏里多了莫名其妙的空格,连“张三”都变成了“张三 ”(后面跟了个全角空格)。他反复试了三次,最后才发现是Excel里用了合并单元格——这其实是数据模型导入中最典型的‘隐形陷阱’之一。
格式不统一,数据就悄悄变形
很多人直接双击打开CSV或Excel文件改完再保存,殊不知Excel默认会自动转换:身份证号末尾的0被吃掉、长数字转成1.23E+17、日期变成一串数字。正确的做法是:用记事本或VS Code打开CSV,确认字段间用英文逗号分隔,每行结尾没多余空格;Excel则要先选中整列→右键→‘设置单元格格式’→选‘文本’,再粘贴数据,最后另存为CSV(UTF-8)。
编码乱码?十有八九是UTF-8和GBK打架
导出中文报表时出现“æå”这种乱码,基本可以断定是编码没对上。大多数现代系统(如Python pandas、Tableau、Power BI)默认读UTF-8,但Windows自带的Excel却习惯用GBK。解决方法很简单:用Notepad++打开CSV→菜单栏‘编码’→转为UTF-8无BOM格式→再导入;或者在Excel里用‘数据’选项卡→‘从文本/CSV’导入,手动指定编码为UTF-8。
表结构变了,导入直接报错别硬扛
上周同事导一个销售数据表,系统提示‘字段数量不匹配’。一看才发现:原模型里有‘折扣率(%)’字段,他导出的Excel标题写成了‘折扣率’,少了括号和单位。更隐蔽的是大小写——MySQL对字段名大小写敏感,而SQL Server不敏感,混着用很容易栽跟头。建议导出前用数据库工具(如DBeaver)看一眼真实字段名,复制粘贴,不手敲。
外键和关联关系,不是数据搬过去就完事
导用户表时顺手把订单表也导了,结果登录系统发现用户头像全显示‘null’。查了半天,原来头像路径存在另一张‘附件表’里,而附件表ID在订单导入时没同步更新。导入带关联的数据,得按依赖顺序来:先导基础表(用户、商品),再导中间表(用户角色),最后导业务表(订单、评价)。顺序错了,轻则字段为空,重则主键冲突报错。
小心自动类型推断的‘好心办坏事’
某次用Python的pandas.read_csv()导入日志数据,时间列明明是‘2024-03-15 09:22:18’,结果读出来成了‘2024-03-15’。因为pandas看到前几行都是日期格式,就自动把整列当date处理了。解决办法是在读取时加参数:
df = pd.read_csv("log.csv", parse_dates=["create_time"], dtype={"user_id": str})显式声明哪些列当时间、哪些必须当字符串,避免‘智能’变‘智障’。导出别只顾点‘另存为’,权限和脱敏得盯紧
财务同事导月度报表给部门共享,顺手点了‘Excel另存为’,结果把含银行卡号、身份证号的原始字段全导出去了。后来被IT部叫去谈话才知道:系统导出功能本身带字段过滤开关,勾选‘仅导出脱敏字段’就能自动隐藏敏感列;而直接连数据库导出,更得确认账号权限只开了SELECT,没开UPDATE或DROP——不然手抖点错,可能真就把生产表删了。