python实现excel文件转换为sql语句

文章由来:

需求1:

DataWorks版本升级之后,如果不采购独享集成资源组,将无法从odps将数据导入本地自建数据库,所以需要以下载文件的形式[这种方式是解决此问题之一的方法],那么下载后的文件转换为sql语句比较方便

需求2:

实际环境中数据分析需要将其他部门提供的excel,进行插入,更新等操作

代码实现:

import win32ui
import xlrd
import time

now = time.strftime("%Y%m%d", time.localtime(time.time()))


class ExcelToSql():
    def __init__(self, file_name, sheet_name, table_name):
        self.file_name = file_name
        self.sheet_name = sheet_name
        self.table_name = table_name
        self.excel_title = None
        self.excel_data = []

    def read_excel(self):
        # 打开excel文件
        work_book = xlrd.open_workbook(self.file_name)
        # 读取sheet文件
        content = work_book.sheet_by_name(self.sheet_name)
        # 读取第一行数据
        self.excel_title = content.row_values(0)
        for row in range(content.nrows - 1):
            # 从第二行开始读数据
            self.excel_data.append(list(str(val) for val in content.row_values(row + 1)))

    def to_sql(self):
        sql1 = "INSERT INTO %s (%s)" % (self.table_name, ",".join(self.excel_title))  # 可写死
        f = open(now + '-' + self.table_name + '.txt', 'a')  # 文件名自己调整
        for row in self.excel_data:
            print(sql1 + " VALUES ('%s');" % ("','".join(row)), file=f)

    def read_write(self):  # 文件内容末尾添加COMMIT;
        with open(now + '-' + self.table_name + '.txt', "a") as x:  # 文件名自己调整#
            x.write("")

    def run(self):
        self.read_excel()
        self.to_sql()
        self.read_write()


dlg = win32ui.CreateFileDialog(1)  # 1表示打开文件对话框
dlg.DoModal()
excel_file_name = dlg.GetPathName()  # 获取选择的文件名称
print(excel_file_name)  # print(2)

excel_sheet_name = "Sheet1"  # excel工作薄名,注意大小写,可修改
sql_table_name = input("输入表名: ")
ExcelToSql(excel_file_name, excel_sheet_name, sql_table_name).run()

print("执行成功,请检查")

运行细节:

  1. 选择你要操作的excel

  1. 这里的表名填写为你要导入数据库中的表名

  1. 导入成功,转换成功的sql文件默认存储在这个python项目下,也可以从左侧的地方查看文件的路径

总结:这里转换的还是txt文件,需要改为sql文件看下一章

操作过程中的问题解决:

报以下错误,代表导入的xlrd包版本过高 或者 缺失xlrd-1.2.0包

解决方法:

  1. 检查是否存在xlrd-1.2.0包 执行pip list命令

1.1.不存在xlrd包,执行pip install xlrd==1.2.0

此时安装成功,如果执行还是报错,执行步骤2

1.2 存在xlrd包,那就需要执行步骤2

  1. 将高版本xlrd包降为1.2.0

我们发现即使安装了1.2.0版本这里还是2.0.1,这就是报错的原因,所以接下来降版本

然后再执行run就不会有问题

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值