一堆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)
网友评论