excel 批量导入数据库并返回导入情况的问题

2019-08-15 10:03:09 +08:00
 admingyu

Flask 后端开发,现在公司有个需求是将 excel 表内的数据导入到数据库(字段不是一一对应的,有些字段不需要),要求返回导入成功数量,导入失败数量,以及具体哪几条数据导入失败,成功的数据要入库。

目前的方法是: sqlalchemy + xlrd

  1. 导入数据库用db.session.bulk_insert_mappings()
  2. 检查哪几条数据不成功用的是把数据查出来和 excel 内的数据做对比

-- 但是感觉 2 这样做好蠢,不知道有没有什么更好的方法,有人分享下吗

4596 次点击
所在节点    Flask
8 条回复
mu666
2019-08-15 10:11:08 +08:00
导入数据库不是存嘛?把存的结果记录一下,导出到 excel 这样?
admingyu
2019-08-15 10:38:25 +08:00
@mu666 可是我们怎么知道这些数据有没有真正的存进去呢
mu666
2019-08-15 11:22:09 +08:00
@admingyu 你存数据库,save 失败不会报错吗?做个判断?报错把信息记录一下,然后存 excel 里
admingyu
2019-08-15 13:23:23 +08:00
@mu666 是写接口,Excel 数据存进数据库,返回 json 数据告诉导入结果, 当 save 失败的时候,并不会把那部分成功的数据保存到数据库,而需求是`成功的保存,失败的返回,并且告知哪几条数据失败了`,如下:
`{
"sys_status": "SUCCESS",
"data": {
"total": 23,
"fail": 1,
"fail_sn":
[
"Wwtr2vf34gd7e940fg"
]
},
"message": "成功"
}`
ajun727
2019-08-15 16:53:48 +08:00
用 kettle spoon 水壶工具就可以批量导入吧。。至于成功不成功,我觉得只能通过对比数据库,not exist 来操作吧
lmingzhi08
2019-08-15 16:59:42 +08:00
我一般先用 pandas 读取 excel 文件,然后再后续处理。
其实是否可以先将 excel 文件转为 csv,txt 之类的文本文件,后续处理会方便一下?
然后导入数据库之前做数据校验,符合格式的导入数据库,不符合格式的导出到错误日志。
SingeeKing
2019-08-15 19:16:18 +08:00
我想说一句请换成 openpyxl
admingyu
2019-09-10 10:29:17 +08:00
@lmingzhi08
@ajun727
我最终采取的就是这样的操作,谢了各位

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/592021

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX