今天导入数据的时候,来来回回的犯了好几个问题。
时间不识别。
所有的导入,都需要指定时间格式,如果写错了,不是1900打头(那是年解析失败),要不然就是空(直接连时间都没有)。
几万条还OK,如果是几百万条,当场死的心都有。
当导出数据的时候,先执行 limit 10来确定各个信息准确无误。然后再进行下一步的导入
格式不对应 + 空行
比如说:我导入100个文件,我就要批量调整100个文件的格式。
现在基本上EXCEL单表65535上限,100万条就是20个。
其他的文件都没有这个限制,但是谁让xls现在还是最多的格式导入工具啊(又不是人人都是程序员,不是程序员的天天弄EXCEL啊)
- 标题不是第一行。
- 标题和数据库列不对应。
- 合并单元格。
这些要不然手工处理,要不然写脚本。写了好几天脚本了。
现在都是用pandas,完全不进行别的处理,就是为了导入导出数据库……
导入错误删除极度困难。
比如说:我导入到生产库,然后顾客用户就能看到数据了。导入错了怎么办?删除怎么删?
如果说没有一个自增索引你都不敢删除。
如果是个读写频繁的表:删除的数据前后都有数据。导入错了爽的一P。(因为会在导入途中不停的新增数据)
(我导入到测试库的时候导入的数据没有时间,当场删除,但是如果有客户业务那是真的爽)
导入过程中断需要重新开始
比如说:我导入200W条数据。
然后导入的时候,我系统崩溃了。然后打开电脑的时候:我XXX的导入到什么地方了?
如果是生产库那就爽了。
我的建议是:导入的时候找一个无用的标志位,加入导入的版本信息。等导入失败需要删除的时候可以通过导入的版本信息进行完整的删除。
主键自增索引。
导入的时候带着自增索引,然后导入到另外一个带自增索引的数据。
需要定位索引列,然后对索引列进行特殊处理
不加锁非事务
insert是对写入的数据加锁事务性的(导入的是否别人看不见),但是导入的时候可不是事务性的。
导入的同时在前端能够看到数据的增长。
在一些比较敏感的业务场景下,如果能够看到头部用户就认为导入已经完成,如果出现不符合期望的情况就会投诉。
在写入的时候会出现各种不可预估的情况
我这边,以后就是:导入到重要表格的时候,先用DDL生成和目标数据库一模一样的数据库,然后通过insert select 导入。
怎么觉得有很多运维吃过这个亏……