Mysql,sqllite表结构对比

本代码用C#实现,对比有差异的字段 ,调用类方法Comare 即可获取结果。

public class CompareDataBaseHelper
 {
     string mysqlConnectionString = "Server=127.0.0.1;Database=testdb;Uid=root;Pwd=123456;charset=utf8;";
     string sqliteConnectionString = "Data Source=testdb.db;Version=3;";

     //表名称

     List<string> tableNames = new List<string>
     {
         "sutdent", "school"
     };

     public void Comare()
     {
         foreach (var tableName in tableNames)
         {
             Console.WriteLine($"Comparing table: {tableName}");
             var mysqlColumns = GetMysqlColumns(mysqlConnectionString, tableName);
             var sqliteColumns = GetSqliteColumns(sqliteConnectionString, tableName);

             CompareColumns(mysqlColumns, sqliteColumns, tableName);
             Console.WriteLine();
         }
     }

     static Dictionary<string, string> GetMysqlColumns(string connectionString, string tableName)
     {
         var columns = new Dictionary<string, string>();

         using (var connection = new MySqlConnection(connectionString))
         {
             connection.Open();
             var command = new MySqlCommand($"SHOW COLUMNS FROM {tableName}", connection);
             using (var reader = command.ExecuteReader())
             {
                 while (reader.Read())
                 {
                     var columnName = reader["Field"].ToString();
                     var columnType = reader["Type"].ToString();
                     columns[columnName] = columnType;
                 }
             }
         }

         return columns;
     }

     static Dictionary<string, string> GetSqliteColumns(string connectionString, string tableName)
     {
         var columns = new Dictionary<string, string>();

         using (var connection = new SQLiteConnection(connectionString))
         {
             connection.Open();
             var command = new SQLiteCommand($"PRAGMA table_info({tableName})", connection);
             using (var reader = command.ExecuteReader())
             {
                 while (reader.Read())
                 {
                     var columnName = reader["name"].ToString();
                     var columnType = reader["type"].ToString();
                     columns[columnName] = columnType;
                 }
             }
         }

         return columns;
     }

     static void CompareColumns(Dictionary<string, string> mysqlColumns, Dictionary<string, string> sqliteColumns, string tableName)
     {
         Console.WriteLine($"Comparing columns for table: {tableName}");

         foreach (var column in mysqlColumns)
         {
             if (sqliteColumns.TryGetValue(column.Key, out var sqliteType))
             {
                 if (column.Value != sqliteType)
                 {
                    // Console.WriteLine($"Column {column.Key}: MySQL Type = {column.Value}, SQLite Type = {sqliteType}");
                 }
             }
             else
             {
                 Console.WriteLine($"Column {column.Key}  Type = {column.Value}  exists in MySQL but not in SQLite.");
             }
         }

         foreach (var column in sqliteColumns)
         {
             if (!mysqlColumns.ContainsKey(column.Key))
             {
                 Console.WriteLine($"Column {column.Key}  Type = {column.Value}   exists in SQLite but not in MySQL.");
             }
         }
     }

 }

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

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

相关文章

组件通信 Vue3

1.props 1.child <template><div class"child"><h3>子组件</h3><h4>玩具&#xff1a;{{ toy }}</h4><h4>父给的车&#xff1a;{{ car }}</h4><button click"sendToy(toy)">把玩具给父亲</butt…

通过visual studio进行dump文件调试和分析

0、前言 很多时候程序crash之后需要分析原因。对于C/C程序&#xff0c;一般最常见的场景和方法就是根据dump文件进行分析。 1、分析的前提条件 进行dump文件分析&#xff0c;需要以下文件&#xff1a; 进程crash时产生的dump文件程序源码进程对应的程序exe文件编译exe文件时产…

【赵渝强老师】MongoDB的存储引擎

存储引擎&#xff08;Storage Engine&#xff09;是MongoDB的核心组件&#xff0c;它负责管理数据如何存储在硬盘&#xff08;Disk&#xff09;和内存&#xff08;Memory&#xff09;上。从MongoDB 3.2 版本开始&#xff0c;MongoDB支持多种类型的数据存储引擎。 视频讲解如下&…

【ubuntu24.04】腾达U12 8812au无线网卡成功安装

U12是腾达2019年的产品 参考:台式机Ubuntu20.04系统下安装Tenda U12 无线网卡驱动当时不支持6.x的内核。官方的ubuntu驱动看起来不能用了。ipconfig /all 查看 Wireless LAN adapter WLAN 2:Connection-specific DNS Suffix . :Description . . . . .

linux-----内核(Kernel)与文件系统(File System)

一、内核作用 1.资源管理&#xff1a; 内核负责管理系统资源&#xff0c;包括CPU、内存、设备驱动和网络通信等。它为用户空间提供了一组接口&#xff0c;使得应用程序能够访问底层硬件&#xff0c;而不需要直接与硬件交互。 2.进程管理 内核负责进程的创建、调度、终止等操作…

使用twilio向手机发短信做监控报警

最近遇到个需求&#xff0c;就是夜班HW希望有个监控系统指标&#xff0c;如果异常就向监控人手机打电话的需求。在考察以后&#xff0c;发现目前由于国内防电信诈骗的原因&#xff0c;所以想要使用云通讯功能必须由企业去申请&#xff0c;但作为一个个人的监控项目来说太大了。…

Python | Leetcode Python题解之第384题打乱数组

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, nums: List[int]):self.nums numsself.original nums.copy()def reset(self) -> List[int]:self.nums self.original.copy()return self.numsdef shuffle(self) -> List[int]:for i in range(l…

极光推送(JPush)赋能登虹科技,打造智慧视觉云平台新体验

近日&#xff0c;中国领先的客户互动和营销科技服务商极光&#xff08;Aurora Mobile&#xff0c;纳斯达克股票代码&#xff1a;JG&#xff09;与杭州登虹科技有限公司&#xff08;以下简称“登虹科技&#xff08;Closeli&#xff09;”&#xff09;达成合作&#xff0c;借助极…

Mybatis部分笔记二——Spring:

Spring spring是轻量级的&#xff0c;IOC和AOP的一站式java开发框架&#xff0c;简化企业级开发。 其中&#xff1a; 轻量级&#xff1a;框架体积小(核心模块), IOC&#xff1a;Inversion of Control(控制反转),把创建对象的控制权&#xff0c;反转给Spring框架。 以前程序…

Debian Linux上安装Jumpserver

1.安装 Debian并配置 登录www.debian.io,下载网络版安装&#xff0c;安装很快&#xff0c;但完成后修改IP就遇到问题vi /etc/network/interfaces auto eth0 #设置开机自动连接网络 iface lo inet loopback allow-hotplug eth0 iface eth0 inet static #static表示使用固定I…

数分基础(03-3)客户特征分析--Tableau

文章目录 客户特征分析 - Tableau1. 说明2. 思路与步骤3. 数据准备和导入3.1 用EXCEL初步检查和处理数据3.1.1 打开3.1.2 初步检查&#xff08;1&#xff09;缺失值检查缺失值处理 &#xff08;2&#xff09;格式化日期字段&#xff08;3&#xff09;其他字段数据类型 &#xf…

一 lua学习笔记:概述

一 概述 Lua 语言是一种动态类型语言( Dynamically-typed language ),在这种语言中没有类型定义( type definition ),每个值都带有其自身的类型信息。 Lua 是一种轻量小巧的脚本语言,用标准C语言编写并以源代码形式开放, 其设计目的是为了嵌入应用程序中,从而为应用程…

MySQL5.7.36之主从复制部署安装-centos7

主库是192.168.31.209:3306 从库是192.168.31.210:3308、192.168.31.209:3307、192.168.31.210:3309、192.168.31.211:3310、192.168.31.211:3311 切记&#xff1a;不管是主库还是从库&#xff0c;server_id一定不能重复 1、主库创建复制账号及授权 create user repl% iden…

【vscode】vscode+cmake+llvm+ninja开发环境的搭建(draft)

文章目录 前言1 软件、工具和插件安装1.1 vscode安装1.2 cmake安装1.3 安装LLVM1.4 安装Ninja1.5 vscode插件安装 2 工具链和CMakeLists2.1 工具链&#xff08;toolchain.cmake&#xff09;2.2 CMakeLists.txt2.3 基本语法注释 前言 本文是一个使用vscode的小白扫盲贴。 所谓工…

科讯档案管理系统存在SQL注入漏洞(0day)

漏洞描述 安徽科迅教育装备20年来来始终坚持智慧校园集成方案产品的开发和部署应用&#xff0c;我们有完善的智慧校园和数字校园建设方案&#xff0c;根据不同的学校不同的实际情况量身定做系统集成方案。产品主要是为了实现校园的智慧网络、智慧OA、智慧教学、智慧学习、数字医…

.NET Razor类库-热加载 就是运行时编译

1.新建3个项目 1.1 一个.NET Standard2.1项目 IX.Sdk.SvnCICD4NuGet 1.2 一个.NET Razor类库项目 IX.Sdk.SvnCICD4NuGet.RazorWeb 1.3 一个.NET6 Web项目 IX.Sdk.SvnCICD4NuGet.Web 这3个项目的引用关系 Web引用 Razor类库 和 .NET Standard2.1 Razor类库引用.NET Standard2.1…

数据同步大冒险:PostgreSQL到MySQL的奇妙之旅

引言&#xff1a;一场跨数据库的浪漫邂逅 &#x1f491; 在数据的世界里&#xff0c;不同数据库系统就像是来自不同星球的恋人&#xff0c;它们各自拥有独特的魅力&#xff0c;但偶尔也会渴望一场跨越界限的亲密接触。今天&#xff0c;我们就来见证一场PostgreSQL与MySQL之间的…

基于RK3588+MCU智能清洁车应用解决方案

智能清洁车应用解决方案 在智慧城市建设发展的过程中&#xff0c;智慧环卫是打造智慧城市的重要组成部分&#xff0c;智能清洁车作为实现环卫智能化、提升作业效率和服务质量的关键工具&#xff0c;发挥着不可或缺的作用。 智能清洁车集成了激光雷达、双目视觉、多重传感器以及…

【drools】kie:官方仓库clone 遇到问题解决

git clone https://github.com/kiegroup/drools.git这个与apache的还有不同。代码比较多,考验代理能力 zhangbin@LAPTOP-Y9KP MINGW64 /d/Future $ rm -rf drools/zhangbin@LAPTOP-Y9KP MINGW64 /d/Future $ git clone https://github.com/kiegroup/drools.git Cloning into …

无线通信频率分配

首先看看无线电信号的频谱如何划分&#xff1a; 一、5G NR 3GPP已指定5G NR 支持的频段列表&#xff0c;5G NR频谱范围可达100GHz&#xff0c;指定了两大频率范围&#xff1a; ① Frequency range 1 &#xff08;FR1&#xff09;&#xff1a;就是我们通常讲的6GHz以下频段 频率…