字段对比清洗

在这里插入图片描述

import pandas as pd
import psycopg2
from psycopg2 import sql# 数据库连接配置
DB_CONFIG = {"host": "","user": "","password": "","dbname": "","port": ,
}def get_excel_fields(excel_file, sheet_name, column_name):"""从 Excel 读取字段列表"""df = pd.read_excel(excel_file, sheet_name=sheet_name)# 确保列名一致if column_name not in df.columns:raise ValueError(f"列 '{column_name}' 未在 Excel 文件中找到")# 移除空值,并转换为小写,避免大小写问题return set(df[column_name].dropna().astype(str).str.lower())def get_db_fields(cursor, table_name):"""获取数据库表的字段列表(转换为小写)"""query = sql.SQL("""SELECT column_name FROM information_schema.columns WHERE LOWER(table_name) = LOWER({})""").format(sql.Literal(table_name))cursor.execute(query)# 确保字段名全部转换为小写return set(row[0].lower() for row in cursor.fetchall())def drop_columns(cursor, table_name, columns_to_drop):"""删除数据库表中的指定字段"""for column in columns_to_drop:query = sql.SQL("ALTER TABLE {} DROP COLUMN {} CASCADE").format(sql.Identifier(table_name),sql.Identifier(column))print(f"执行 SQL: {query.as_string(cursor.connection)}")  # 打印 SQL 方便调试try:cursor.execute(query)print(f"✅ 删除成功: {column}")except psycopg2.Error as e:print(f"❌ 删除失败: {column}, 错误: {e}")def main():# 读取 Excel 表结构excel_file = "./test.xlsx"sheet_name = "数据结构"column_name = "编码"table_name = "test_name"try:excel_fields = get_excel_fields(excel_file, sheet_name, column_name)print(f"✅ Excel 字段列表: {excel_fields}")except Exception as e:print(f"❌ 读取 Excel 失败: {e}")returnconn, cursor = None, Nonetry:conn = psycopg2.connect(**DB_CONFIG)cursor = conn.cursor()db_fields = get_db_fields(cursor, table_name)print(f"✅ 数据库字段列表: {db_fields}")columns_to_drop = db_fields - excel_fields  # 计算需要删除的字段if columns_to_drop:print(f"⚠️ 需要删除的字段: {columns_to_drop}")drop_columns(cursor, table_name, columns_to_drop)conn.commit()print("✅ 未使用的字段已删除")else:print("✅ 没有未使用的字段需要删除")except psycopg2.Error as e:print(f"❌ 数据库错误: {e}")finally:if cursor:cursor.close()if conn:conn.close()if __name__ == "__main__":main()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/25254.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里开源正式开园文生视频、图生视频模型-通义万相 WanX2.1

简介 发布时间与背景 通义万相 Wan2.1 模型于 2025年1月 发布,并迅速登顶视频生成领域权威评测 Vbench 的榜首,超越了包括 Sora、HunyuanVideo、Minimax 等国内外知名模型,并于这周开源。它是阿里云在 AI 视频生成领域的最新成果&#xff0…

Python的那些事第三十四篇:基于 Plotly 的交互式图表与仪表板设计与应用

基于 Plotly 的交互式图表与仪表板设计与应用 摘要: 本文深入探讨了 Plotly 这一强大的交互式图表和仪表板库。首先介绍了 Plotly 的背景与发展历程,随后详细阐述了其核心功能特性,包括丰富的图表类型、高度的自定义能力以及便捷的交互操作。通过实际案例分析和示例代码展示…

英文论文查重,Turnitin和IThenticate两个系统哪个更合适?

Turnitin系统和IThenticate系统都是检测英文论文的查重系统,但是两者之间还是有一些不一样的。 下面针对这两个系统给大家具体分析一下。 一、Turnitin系统 Turnitin检测系统: https://truth-turnitin.similarity-check.com Turnitin是世界上主流的…

[Linux]项目自动化构建工具-make/Makefile

项目自动化构建工具-make/Makefile make与Makefile单文件Makefile多文件Makefile 缓冲区 首先理清多文件之间的关系: 这里为什么没有包含test.h头文件?因为在当前工作目录下,因此不需要包含test.h,如果把test.h移到上一级目录&…

ArcGIS Pro中打造精美高程渲染图的全面指南

一、引言 高程渲染图是地理信息系统(GIS)中用于展示地形地貌的重要工具。一张精美的高程渲染图,不仅能够清晰地呈现地形的起伏变化,还能增强视觉表现力,使得数据更加生动、直观。ArcGIS Pro作为一款强大的GIS软件&…

ollama本地部署DeepSeek(Window图文说明)

目录 1. ollama下载2. 环境变量3. deepseek下载4. 彩蛋 1. ollama下载 安装包下载:Window安装包 命令行方式安装:(不推荐使用exe方式进行安装,默认会在C盘路径下) 点击install之后: 2. 环境变量 先配…

sqlilab 46 关(布尔、时间盲注)

sqlilabs 46关(布尔、时间盲注) 46关有变化了,需要我们输入sort,那我们就从sort1开始 递增测试: 发现测试到sort4就出现报错: 我们查看源码: 从图中可看出:用户输入的sort值被用于查…

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡

【02】Cocos游戏开发引擎从0开发一款游戏-cocos项目目录结构熟悉-调试运行项目-最重要的assets资源文件认识-场景sense了解-优雅草卓伊凡 开发背景 接下来我们直接打开我们的项目开始进一步操作, 实战开发 导入项目 我把得到的项目解压到本地,我们开…

spring结合mybatis多租户实现单库分表

实现单库分表 思路:student表数据量大,所以将其进行分表处理。一共有三个分表,分别是student0,student1,student2,在新增数据的时候,根据请求头中的meta-tenant参数决定数据存在哪张表表。 数…

数据结构:Top-K问题详解

一.Top-K问题 #include<stdio.h> //先自主创建n个数据 void CreateNDate() {// 造数据int n 100000;srand(time(0));//表示随时间初始化随机生成数的种子const char* file "data.txt";///创建一个文件FILE* fin fopen(file, "w");//“只写”写入创…

基于 Flink CDC YAML 的 MySQL 到 Kafka 流式数据集成

本教程的演示都将在 Flink CDC CLI 中进行&#xff0c;无需一行 Java/Scala 代码&#xff0c;也无需安装 IDE。 这篇教程将展示如何基于 Flink CDC YAML 快速构建 MySQL 到 Kafka 的 Streaming ELT 作业&#xff0c;包含整库同步、表结构变更同步演示和关键参数介绍。 准备阶段…

AI绘画软件Stable Diffusion详解教程(3):Windows系统本地化部署操作方法(通用版)

上一篇教程介绍了如何在本地部署Stable Diffusion专业版&#xff0c;虽然便于技术人员研究&#xff0c;但是普通人使用起来不便捷&#xff0c;每次只能通过cmd窗口的指令形式或者python代码方式来画图&#xff0c;要记很多的指令很繁琐。 本篇教程教您搭建webui版的&#xff0…

进程 ─── linux第10课

目录 回顾上一节 进程 基本概念 描述进程 - PCB task_struct - PCB的一种 task_ struct内容分类 组织进程 下面来介绍task_struct内部 PID 和PPID 子进程与父进程 getpid()和getppid() 杀进程 exe 和 cwd 回顾上一节 1. 如果我们写的程序要访问硬件,必定通过sy…

量子计算的数学基础:复数、矩阵和线性代数

量子计算是基于量子力学原理的一种新型计算模式,它与经典计算机在信息处理的方式上有着根本性的区别。在量子计算中,信息的最小单位是量子比特(qubit),而不是传统计算中的比特。量子比特的状态是通过量子力学中的数学工具来描述的,因此,理解量子计算的数学基础对于深入学…

PostgreSQL_安装部署

一、Windows系统下安装 1.下载安装包 登录PostgreSQL: Downloads官网&#xff1a; 选择14.12版本&#xff0c;点击下载&#xff1a; 2.安装PostgrSQL14.12 双击exe安装包程序&#xff0c;准备安装&#xff1a; 选择安装路径&#xff1a; 选择想安装的工具&#xff1a; 选择数…

Idea 和 Pycharm 快捷键

一、快捷键 二、Pycharm 中怎么切换分支 参考如下 如果在界面右下角 没有看到当前所在的分支&#xff0c;如 “Git:master” 3. 有了 4.

第十四届蓝桥杯:DFS之飞机降落

这道题&#xff0c;由于它的数据范围是非常小的&#xff0c;我们可以采取暴力搜索的措施&#xff0c;把每种情况都枚举出来&#xff0c;如果有能行的情况就返回true 同时我们也要学会剪枝&#xff0c;如果已经确认飞机不能降落&#xff0c;就不要往下再展开了 #include <i…

Oracle 查询表空间使用情况及收缩数据文件

本文介绍Oracle收缩数据文件的相关操作&#xff0c;运维工作中有时会需要通过收缩数据文件来释放磁盘空间。 数据文件初始化方式&#xff1a; 1.我们创建表空间一般有两种方式初始化其数据文件&#xff0c;即指定初始大小为32G&#xff08;很大的值&#xff09;或指定初始大小为…

android 新增native binder service 方式(一)

关于之前说的native service 之前有写过类似的文章&#xff0c;今天主要介绍下如何通过binder 方式跨进程调用和回调,结合网上的各种文章&#xff0c;总结了3种常见的添加方式&#xff0c;供大家参考。 一&#xff0c;aidl 文件定义 先看下整体的目录结构 libserviceaidl 就是…

【大模型系列篇】大模型微调工具 LLama-Factory、Unsloth、ms-SWIFT

今日号外&#xff1a;&#x1f525;&#x1f525;&#x1f525; DeepSeek团队正式启动为期五天的开源计划 Day3&#xff1a;DeepGEMM。DeepGEMM 是一个专为简洁高效的 FP8 通用矩阵乘法&#xff08;GEMM&#xff09;设计的库&#xff0c;具有细粒度缩放功能&#xff0c;如 Deep…