Excel导入数据库(字段表名不一样)

2021-02-08  本文已影响0人  叶叶阿姨

一堆Excel需要导入数据库,但是表名和字段完全不一样(需要改名,并且不是所有字段都要)
1.先打开文件

import pandas as pd
# 读数据
pd.read_csv(filename)  # 读取 csv文件
pd.read_excel(filename)  # 读取 xls文件
pd.read_excel(filename, sheet_name=0)   # 读取 xlsx文件
pd.read_table(filename)  # 读取 TXT文件
pd.read_sql(sql=query, con=connection_object)  # 进行sql语句操作,并读取
 data = pd.read_excel(r'D:\监控报表\日报\日报模板\全国区域与运营中心.xls')
    test_data = []  # 需要用到的字段
    area_data = []  # 区域
    for i in data.index.values:  # 获取行号的索引,并对其进行遍历:
        # 根据i来获取每一行指定的数据 并利用to_dict转成字典
        row_data = data.loc[i, ['二级组织机构名称', '三级组织机构名称', '四级组织机构名称']].to_dict()
        test_data.append(row_data)
        area_data.append(row_data['二级组织机构名称'])
        # print("最终获取到的数据是:{0}".format(test_data))
    area_data = list(set(area_data))  # 去重的区域列表
    # 写入区域
    for i in area_data:
        if Region.objects.filter(region_name=i):
            print('区域已存在')
        else:
            Region.objects.create(region_name=i)
            # print(i, '区域写入完成')
    # 写入运营中心
    for i in test_data:
        if OperCent.objects.filter(name=i['三级组织机构名称']):
            print(i, '运营中心已存在')
        else:
            # print('运营中心需写入', i['三级组织机构名称'], i['二级组织机构名称'])
            region_id = Region.objects.filter(region_name=i['二级组织机构名称']).first()
            # print(region_id)
            OperCent.objects.create(name=i['三级组织机构名称'], region_name=region_id)
    # 写入运
    for i in test_data:
        if Tran.objects.filter(tran_name=i['四级组织机构名称']):
            print(i, '四级组织机构已存在')
        else:
            # print('四级组织机构心需写入', i['四级组织机构名称'])
            opercent_id = OperCent.objects.filter(name=i['三级组织机构名称']).first()
            # print(opercent_id)
            Tran.objects.create(tran_name=i['三级组织机构名称'], operent_name=opercent_id)
    ------------------------------ 写入单仓 -------------------------------
    读取整个csv文件
    csv_data = pd.read_csv(r"D:\监控报表\日报\日报模板\全国运营中心下的单仓.csv", engine='python', encoding='gb2312')
    sj_test_data = []  # 需要用到的字段
    for i in csv_data.index.values:
        row1_data = csv_data.loc[i, ['操作区名称', '运营中心名称', '项目名称', '仓配库房名称']].to_dict()
        sj_test_data.append(row1_data)
    # 写入单仓
    for i in sj_test_data:
        if Warh.objects.filter(warh_name=i['仓配库房名称']):
            print(i['仓配库房名称'], '单仓已存在')
        else:
            print('单仓需写入', i['仓配库房名称'])
            opercent_id = OperCent.objects.filter(name=i['运营中心名称']).first()
            region_id = Region.objects.filter(region_name=i['操作区名称']).first()
            Warh.objects.create(warh_name=i['仓配库房名称'], project=i['项目名称'], operent_name=opercent_id, region_name=region_id)


上一篇 下一篇

猜你喜欢

热点阅读