import sys
from orator import DatabaseManager
import xlrd dbconfig = {
'mysql': {
'driver': 'mysql',
'host': "",
'database': "",
'user': "",
'password': "",
'port': 3306
}
}
db = DatabaseManager(dbconfig) def loadConfig():
return {
"file": ["f:\\11.xlsx"],
"startRow": 5,
"table": "yy_oph2",
"cleanBeforeImport": 1,
"comitcount": 100,
"map": {
"r": "ophno"
},
"defaultValueMap": {
"userid": 1
}
} def chang26to10(value):
s = value.upper()
re = 0
for x in s:
re *= 26
re += ord(x) - ord('A') + 1
return re if __name__ == '__main__':
importConfig = loadConfig()
# 获取要导入的表名
tableName = importConfig["table"]
comitcount = importConfig["comitcount"]
startRow = importConfig["startRow"]
cleanBeforeImport = importConfig["cleanBeforeImport"]
defaultValueMap = importConfig["defaultValueMap"]
if cleanBeforeImport == 1:
print("确定要清空%s表数据请输入yes?" % (tableName))
flag = sys.stdin.readline().strip()
if flag.upper() == "YES":
db.table(tableName).truncate()
kv = importConfig["map"]
defaultkv = importConfig["defaultValueMap"]
# 支持多文件导入
for fileidx in range(len(importConfig["file"])):
xls = xlrd.open_workbook(importConfig["file"][fileidx])
sheetcount = len(xls.sheets())
# 多sheet导入
for sidx in range(sheetcount):
sheet = xls.sheets()[sidx]
startIdx = startRow
vlist = []
for i in range(startIdx - 1, sheet.nrows):
print("处理第%s行" % i)
dict = {}
for k, v in kv.items():
dict[v] = str(sheet.cell_value(i, chang26to10(k) - 1)).replace("'", "''")
for k, v in defaultkv.items():
dict[k] = v
vlist.append(dict)
# 每50行提交一次
if len(vlist) == comitcount:
db.table(tableName).insert(vlist)
vlist.clear()
continue
if len(vlist) > 0:
db.table(tableName).insert(vlist)
vlist.clear()
print("处理完成")

python导入xls数据到db--优化版的更多相关文章

  1. MySQL 数据库出现导入xls数据出现1062主从错误错误问题解决方案

    今天把xls数据表导入MySQL数据库时发现出现1062错误    ,并且有20-700条数据一直导入不了所以开始找解决方案. 解决方案1:   数据库表设计问题导致相同字段的重复数据不能导入   解 ...

  2. source命令导入大数据速度慢优化

    XX市邮政微商城的项目数据库,300多M,约220万条数据,source命令导入花了20个小时左右,太不可思议. 速度慢原因:220多万条数据,就 insert into 了220多万次,下图: 这是 ...

  3. python - 接口自动化测试实战 - case1 - 再次优化版

    本次优化: 1.  各级分Package 2.  封装[ReadExcel]类 3.  封装[ReadConfig]类 4.  封装[GetLog]类 5.  引入ddt数据驱动测试,优化测试用例代码 ...

  4. [转载]C#导入XLS数据到数据库

    Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> ...

  5. Python 导入CSV、JSON、XML数据

    常见的机器可读格式包括: - 逗号分隔值(Comma-Separated Values,CSV)- 制表符分隔值(tab-separated values,TSV)- JavaScript 对象符号( ...

  6. 关于python导入数据库excel数据时出现102, b"Incorrect syntax near '.15562'.DB-Lib error message 20018, severity 1的问题总结

    1.对于在使用python导入sqlsever时,出现102, b"Incorrect syntax near '.15562'.DB-Lib error message 20018, se ...

  7. Python_实现json数据的jsonPath(精简版)定位及增删改操作

    基于python实现json数据的jsonPath(精简版)定位及增删改操作   by:授客 QQ:1033553122 实践环境 win7 64 Python 3.4.0 代码 #-*- encod ...

  8. Navicat导入.xls等文件失败

    一.问题 在学习django的models时,使用Navicat premium导入.xls数据的时候会出现导入失败的原因,即使是换成了csv文件也是失败的,原因是数据库的表有外键,而需要设置外键限制 ...

  9. python——读取MATLAB数据文件 *.mat

    鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题.以下代码可以解决python读取.mat文件的问题.主要使用sicpy.io即可 ...

  10. jmeter导入DB数据再再优化

    前言:分享和规定命名规范后,各位测试人员一致认为这样jmeter的jmx文件限制太死,主要体现六方面: 第一:规定了一个jmx文件只能录入一个接口,这样会导致jmx文件很多 第二:导入DB的jmx文件 ...

随机推荐

  1. chrome工具调试

    项目调试的困境 程序开发总会遇到各种各样的问题,为什么实际结果和预期结果不一致? 这个时候如果能深入程序内部抽丝剥茧去一探究竟再好不过! 而chrome工具是前端开发的杀手锏,经常听到的一句话是: 出 ...

  2. day15-Servlet04

    Servlet04 12.ServletConfig 12.1ServletConfig基本介绍 ServletConfig类是为Servlet程序配置信息的类 Servlet对象和ServletCo ...

  3. PHP实现CURL发送请求

    public function curl($url, $params = false, $ispost = 0) { $httpInfo = array(); //初始化 $ch = curl_ini ...

  4. 13.django-admin组件

    Django内置了一个强大的组件叫Admin,提供给网站管理员快速开发运营后台的管理站点,下面通过案例进行操作 1.创建模型类 模型类如下: from django.db import models ...

  5. 【DL论文精读笔记】VGGNet

    VGGNet(Very Deep Convolutional Networks) 1.introduction ● 采用3x3的小卷积核应用在比较深的网络里 ● 结果不错,赢得了2014 Imagen ...

  6. Mybatis下的SQL注入漏洞原理及防护方法

    目录 一.前言 二.SQL 注入漏洞原理 1.概述 2.漏洞复现 3.修复建议 三.Mybatis 框架简介 1.参数符号的两种方式 2.漏洞复现 四.Mybatis 框架下的 SQL 注入问题及防护 ...

  7. postman的运用

    链接: https://pan.baidu.com/s/1gfaKoAv 密码: dp7t 最近要测试和其他系统对接,忽然想起了postman这款url测试神器. 现分享如下: 下载完成后解压到文件夹 ...

  8. 【每日一题】【使用list&使用辅助栈实现】2022年2月11日-NC90 包含min函数的栈

    描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop.top 和 min 函数操作时,栈中一定有元素. 此栈包含的方法有:push(value): ...

  9. 【十次方微服务后台开发】Day02:加密与JWT鉴权、微服务注册中心、配置中心、熔断器、网关、消息总线、部署与持续集成、容器管理与监控Rancher、influxDB、grafana

    一.密码加密与微服务鉴权JWT 1.BCrypt密码加密 Spring Security 提供了BCryptPasswordEncoder类,实现Spring的PasswordEncoder接口使用B ...

  10. 【实时数仓】Day04-DWS层业务:DWS设计、访客宽表、商品主题宽表、流合并、地区主题表、FlinkSQL、关键词主题表、分词

    一.DWS层与DWM设计 1.思路 之前已经进行分流 但只需要一些指标进行实时计算,将这些指标以主题宽表的形式输出 2.需求 访客.商品.地区.关键词四层的需求(可视化大屏展示.多维分析) 3.DWS ...