IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 将excel里面的数据直接生成sql脚本,并存入本地 -> 正文阅读

[大数据]将excel里面的数据直接生成sql脚本,并存入本地

公司领导要求把自己模拟的数据写入excel表格,
然后把表格给开发,让开发往数据库插入数据
身为一名测试,在想,能否自己把excel里面的数据转为sql,存入本地,然后把这个写好的sql给开发

  1. 领导提倡测试插入数据,最大的原因是因为测试连接linux,一句句写sql过于麻烦,把文件给开发,让开发批量导入;
  2. 多写脚本,练习自己的脚本能力,更熟练的掌握运用python的知识
  3. 写好的sql给开发,为他节约点时间。

自己先创建一个xls表:
在这里插入图片描述

# -*- coding: utf-8 -*-
# @Author : chair
# @File : PyCharm /inert_sql.py
# @Data : 2022-01-24  20:39
# @Annotation : 从excel获取数据,生成sql,存入本地

import xlrd
class InertSql():
    """读取excel文件,创建sal,存入本地"""
    def __init__(self,fil,sheet):
        """fil=excel路径,sheet=表位置,创建一个demo.sql文件,存放生成的sql"""
        self.file_path = xlrd.open_workbook(fil)
        self.sheet = self.file_path.sheet_by_name(sheet)
        self.fil = open("C:\\Users\\chair\\Desktop\\demo.sql",mode='w+',encoding="utf-8")
    def __del__(self):
        """读取文件,存入本地后,关闭两个文件"""
        self.fil.close()
        self.file_path.release_resources()
        del self.file_path
    def read_exle(self,table):
        """table=表名,keys=字段,values==内容,excel格式:第一行字段,第二行~第N行存放内容"""
        keys = self.sheet.row_values(0)
        for i in range(1,self.sheet.nrows):
            values = [seitch_float(x)for x in self.sheet.row_values(i)]
            create_sql = "INSERT INTO {table} ({keys}) VALUES {values};\n".format(table = table,keys = ','.join(keys),values=tuple(values))
            self.fil.write(create_sql)
            print(create_sql)
            # print( end='.')
def seitch_float(i):
    """输入浮点数N.0转换>>N,输入为null/NULL转换>>'' """
    if type(i) == float:
        return int(i) if int(i)==i else i
    else:
        return '' if  i =='null' or i =='NULL' else i
if __name__ == '__main__':
    fil_path = "C:\\Users\\chair\\Desktop\\demo.xls"
    inertsql = InertSql(fil_path,sheet="Sheet1")
    inertsql.read_exle('subject')


>>> INSERT INTO subject (ID,CLASSID,SUBJECTNAME,STATYHOUR,GARDEID) VALUES (1, 8, 'java', 81.9, 56);

>>> INSERT INTO subject (ID,CLASSID,SUBJECTNAME,STATYHOUR,GARDEID) VALUES (2, 11, 'java', 117.24, 49);

>>> INSERT INTO subject (ID,CLASSID,SUBJECTNAME,STATYHOUR,GARDEID) VALUES (3, 11, 'db', 40.6, '');

>>> INSERT INTO subject (ID,CLASSID,SUBJECTNAME,STATYHOUR,GARDEID) VALUES (4, 16, 'python', '', '');

>>> INSERT INTO subject (ID,CLASSID,SUBJECTNAME,STATYHOUR,GARDEID) VALUES (5, 13, 'db', 16.92, 52);

本次学习:

  1. 首次使用while循环,因wile循环次数语法太长了,这是为了在公司使用,所以想法是精简,去除while循环,使用for循环,掌握知识点:.nrows 获取行号
  2. 读取文件的时候,整数会转为浮点数,这种情况下直接转换,包含0的浮点数统一抓换为整数(后续可能遇到问题,根据问题修改)
  3. 不同数据库类型,字段为空的值不同,有的copy出来为‘’,有的copy出来为null,统一把excel里面的null和NULL转换为’’
  4. 初次掌握一行内使用for循环
  5. 初次掌握一行内使用if…else语句
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-01-25 10:39:53  更:2022-01-25 10:40:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 14:58:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码