我是靠谱客的博主 自信红牛,最近开发中收集的这篇文章主要介绍pandas 处理 Excel 文件并将结果写入数据库中,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

需要注意的是pandas处理数据,数字格式的null 会被显示为nan,所以需要简单的处理一下:

str_obj.replace("nan", "null")

完整代码如下:

# -*- coding: utf-8 -*-

import pandas as pd
from datetime import datetime
from impala.dbapi import connect
from impala.util import as_pandas
import os

file = r'E:\日报{}.{}.xlsx'


def import_hive(sql):
    conn = connect(host='host', port=xx)
    cur = conn.cursor()
    print('要执行的SQL是' + sql)
    cur.execute(sql)
    conn.close()


tsk_sql = 'INSERT INTO TABLE xxx VALUES'
amt_sql = 'INSERT INTO TABLE xxx VALUES'

def parse_from_excel(year: int, month: int, day_range: range):
    for i in day_range:
        this_day = datetime(year=year, month=month, day=i)
        mon = this_day.strftime('%Y-%m')
        filename = file.format(this_day.month, this_day.day)
        if os.path.exists(filename):
            df = pd.read_excel(filename, 0, header=None)
            v0 = df.iloc[2:9, [0]].values  
            v1 = df.iloc[2:9, [1]].values  
            v2 = df.iloc[2:9, [2]].values  
            v3 = df.iloc[2:9, [3]].values  
            v4 = df.iloc[2:9, [4]].values  
            tsk_lists = []
            amt_lists = []
         
            for z in range(0, len(v1)):
                tsk_val = "('%s','%s','%s')" % (mon, v0[z][0], str(round(v3[z][0], 6)))
                amt_val = "('%s','%s',%0.6f,%0.6f,%0.4f)" % (
                    this_day.date().__str__(), v0[z][0], float(round(v1[z][0], 6)),
                    round(v2[z][0], 6), round(v4[z][0], 4))

                amt_lists.append(amt_val)
                tsk_lists.append(tsk_val)

            tsk_val_link = tsk_sql + ','.join(tsk_lists)
            amt_val_link = amt_sql + ','.join(amt_lists)

            import_hive(amt_val_link.replace("nan", "null"))

            # 只有每月的1号才会写入销售任务
            if this_day.day == 10:
                import_hive(tsk_val_link.replace("nan", "null"))
        else:
            print('%s文件不存在' % filename)


if __name__ == '__main__':
    parse_from_excel(year=2021, month=4, day_range=range(1, 11))

最后

以上就是自信红牛为你收集整理的pandas 处理 Excel 文件并将结果写入数据库中的全部内容,希望文章能够帮你解决pandas 处理 Excel 文件并将结果写入数据库中所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(78)

评论列表共有 0 条评论

立即
投稿
返回
顶部