首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  Flask

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

  •  
  •   admingyu · 98 天前 · 1436 次点击
    这是一个创建于 98 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    目前的方法是: sqlalchemy + xlrd

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

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

    8 回复  |  直到 2019-09-10 10:29:17 +08:00
        1
    mu666   98 天前 via Android
    导入数据库不是存嘛?把存的结果记录一下,导出到 excel 这样?
        2
    admingyu   98 天前
    @mu666 可是我们怎么知道这些数据有没有真正的存进去呢
        3
    mu666   98 天前 via Android
    @admingyu 你存数据库,save 失败不会报错吗?做个判断?报错把信息记录一下,然后存 excel 里
        4
    admingyu   98 天前
    @mu666 是写接口,Excel 数据存进数据库,返回 json 数据告诉导入结果, 当 save 失败的时候,并不会把那部分成功的数据保存到数据库,而需求是`成功的保存,失败的返回,并且告知哪几条数据失败了`,如下:
    `{
    "sys_status": "SUCCESS",
    "data": {
    "total": 23,
    "fail": 1,
    "fail_sn":
    [
    "Wwtr2vf34gd7e940fg"
    ]
    },
    "message": "成功"
    }`
        5
    ajun727   97 天前
    用 kettle spoon 水壶工具就可以批量导入吧。。至于成功不成功,我觉得只能通过对比数据库,not exist 来操作吧
        6
    lmingzhi08   97 天前
    我一般先用 pandas 读取 excel 文件,然后再后续处理。
    其实是否可以先将 excel 文件转为 csv,txt 之类的文本文件,后续处理会方便一下?
    然后导入数据库之前做数据校验,符合格式的导入数据库,不符合格式的导出到错误日志。
        7
    SingeeKing   97 天前
    我想说一句请换成 openpyxl
        8
    admingyu   72 天前
    @lmingzhi08
    @ajun727
    我最终采取的就是这样的操作,谢了各位
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4380 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 06:08 · PVG 14:08 · LAX 22:08 · JFK 01:08
    ♥ Do have faith in what you're doing.