首页 > 数据库 >记录一次从mysql到sql的数据库迁移

记录一次从mysql到sql的数据库迁移

时间:2024-08-15 16:55:57浏览次数:4  
标签:DataType 数据库 sql item mysql var type1 sqlstr

使用的是c#+SqlSugar。

1.获取表数据

  /// <summary>
  /// 获取数据库访问对象
  /// </summary>
  /// <returns></returns>
  public SqlSugarClient GetSqlSugar()
  {
      SqlSugarClient db = new SqlSugarClient(new ConnectionConfig()
      {
          DbType = dbtype,
          ConnectionString = string.Format("server={0};Database={1};Uid={2};Pwd={3}", dbIp, dbName, dbUser, dbPasswork),
          IsAutoCloseConnection = true
      });
      return db;
  }
/// <summary>
/// 获取表数据
/// </summary>
/// <returns></returns>
public List<DbTableInfo> GetTableInfo()
{
    var sql = GetSqlSugar();
    List<DbTableInfo> viewinfo = sql.DbMaintenance.GetTableInfoList(false);
    sql.Close();
    sql.Dispose();
    return viewinfo;
}

2.获取列  

 /// <summary>
 /// 获取列
 /// </summary>
 /// <param name="tablename"></param>
 /// <returns></returns>
 public List<DbColumnInfo> GetColinfo(string tablename)
 {
     var sql = GetSqlSugar();
    return sql.DbMaintenance.GetColumnInfosByTableName(tablename);
 }

3.遍历表数据添加到sql库

 /// <summary>
 /// 创建表
 /// </summary>
 /// <param name="db"></param>
 /// <param name="tablename"></param>
 /// <param name="tableDescription"></param>
 /// <param name="classname"></param>
 public void CreateClass(string tablename, string tableDescription, string classname, List<DbColumnInfo> cols, SqlSugarClient db = null)
 {
     if (db == null)
     {
         db = GetSqlSugar();
     }
     var typeBilder = db.DynamicBuilder().CreateClass(classname, new SugarTable() { TableName = tablename, TableDescription = tableDescription });

     foreach (var item in cols)
     {
         Type type1 = null;
         if (item.DataType == "bigint")
         {
             type1 = typeof(long);
         }
         if (item.DataType == "datetime")
         {
             type1 = typeof(DateTime);
         }
         if (item.DataType == "bit")
         {
             type1 = typeof(bool);
         }
         if (item.DataType == "double")
         {
             type1 = typeof(double);
         }
         if (item.DataType == "float")
         {
             type1 = typeof(float);
         }
         if (item.DataType == "text" || item.DataType == "varchar")
         {
             type1 = typeof(string);
         }
         if (item.DataType == "int"|| item.DataType == "tinyint")
         {
             type1 = typeof(int);
         }
         typeBilder.CreateProperty(item.DbColumnName, type1, new SugarColumn() 
         { 
             IsPrimaryKey = item.IsPrimarykey, 
             IsIdentity = item.IsIdentity,
             Length=item.Length,
             IsNullable=item.IsNullable,
             
         });
     }


     //创建类
     var type = typeBilder.BuilderType();//想缓存有typeBilder.WithCache

     //创建表
     db.CodeFirst.InitTables(type); 
     
 }

4.获取视图

  /// <summary>
  /// 获取视图信息
  /// </summary>
  public List<DbTableInfo> GetViewInfo()
  {
      var sql = GetSqlSugar();
      List<DbTableInfo> viewinfo = sql.DbMaintenance.GetViewInfoList(false);
      sql.Close();
      sql.Dispose();
      return viewinfo;
  }

5.获取视图创建代码,执行视图创建代码创建视图

 //视图列表
var viewinfo = dba.GetViewInfo();
//数据库连接1 var sql = dba.GetSqlSugar();
//数据库连接2 var sql2 = dbb.GetSqlSugar(); int index = 1; foreach (var item in viewinfo) { var dst = sql.Ado.GetDataTable("show create view " + item.Name); var sqlstr = dst.Rows[0][1].ToString(); try { sqlstr = sqlstr.Replace("ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY DEFINER ", ""); sqlstr = sqlstr.Replace("`", ""); sqlstr += ";"; sql2.Ado.ExecuteCommand(sqlstr); } catch (Exception ex) { File.Create(item.Name).Close() ; File.WriteAllText(item.Name,sqlstr); } //var dst2= sql.Ado.SqlQuerySingle("show create view " + item.Name); Console.WriteLine(index + "-"+ viewinfo.Count); index++; }

6.数据迁移

数据迁移就是连接a查询连接b插入。

标签:DataType,数据库,sql,item,mysql,var,type1,sqlstr
From: https://www.cnblogs.com/rwhaoo/p/18361334

相关文章

  • 【MySQL核心】误删除表?帮你时间倒流!!!
    背景开发同事在操作测试库的时候,误删除了一张业务表,她问我能不能帮她找回来,我说滚!!!经不住她的软磨硬泡,我还是软了下来。简述:在真实的业务场景中,有时候误删除表可能不止是将这个表找回来那么简单,还需要经过业务方确认是否要补数据等处理方式。我这里是通过备份+截取binlo......
  • 根据银灿IS903的CD-ROM盘符打开光盘文件索引数据库Index-Your-Files-2024年8月15日
    根据银灿IS903的CD-ROM盘符打开光盘文件索引数据库Index-Your-Files-2024年8月15日   =====段落分隔符=====Config-7z-SFX-Builder-v2.5.0.5;!@Install@!UTF-8!InstallPath="C:\\APP"OverwriteMode="1+8"RunProgram="nowait:C:\\APP\\IYF\\Delphi7\\Proj......
  • DB+AI会擦出怎样的火花?一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践!
    从DB+AI精选解决方案、特惠权益等,一站式带你了解阿里云瑶池数据库经典的AI产品服务与实践。点此了解DB+AI【方案、权益】一站通。https://www.aliyun.com/activity/database/db4ai前言GenAI时代下的数据库发展趋势阿里云瑶池数据库旨在为客户提供智能化的一站式数据管理......
  • 【漏洞复现】某成科信票务管理系统 TicketManager SQL注入漏洞
              声明:本文档或演示材料仅用于教育和教学目的。如果任何个人或组织利用本文档中的信息进行非法活动,将与本文档的作者或发布者无关。一、漏洞描述某成科信票务管理系统以私有/公有云为基础部署,实现了基础六管控多协同的智慧票务系统。该系统提供了票类策......
  • SQL进阶技巧:数据清洗如何利用组内最近不为空的数据填充缺失值。【埋点日志事件缺失值
    目录0引言1问题描述2数据准备 3问题分析4小结0引言  在用户行为分析中,我们往往需要对用户浏览行为进行分析或获客的渠道进行分析,在埋点日志中用户一个session中会浏览不同的界面,会进行url的跳转,在前端埋点时,往往将用户刚进入界面时的url进行存储,后续在当前......
  • mysql数据库 行级锁,间隙锁和临键锁详解
    目录准备查看锁命令演示普通的select语句共享锁与排他锁无索引行锁升级为表锁间隙锁&临键锁索引上的等值查询(索引为唯一索引)索引上的等值查询(索引为普通索引)索引上的范围查询(唯一索引)准备我的mysql版本是8。CREATETABLE`user`(`id`intunsignedN......
  • 最完整版Linux安装mysql8.0(保姆教程)
    目录前言删除已安装的mysql通过yum源安装mysql前言安装mysql可以通过yum源和压缩包两种方式安装,压缩包安装的mysql通常使用的是旧的SysVinit脚本,使用命令如:servicemysqlstart。如果想要交给服务器的任务管理器管理需要进行额外配置,配置中可能会出现一些问题,推荐使......
  • 读取配置连接信息,利用mybatis进行数据库连接操作
    mybatisConnConfig.properties配置文件内容default.configpath=config/mybatis/mybatis-config.xmldw.jdbc.system.driver=com.mysql.jdbc.Driverdw.jdbc.system.url=dw.jdbc.system.username=dw.jdbc.system.password=ralid.jdbc.system.driver=com.mysql.jdbc.Driver......
  • MySql添加用户权限问题
    MySql添加用户权限问题要为MySQL中的test用户授予所有权限,可以按照以下步骤进行:1.连接到MySQL数据库服务器mysql-uroot-p2.授予root用户所有权限grantallon*.*to'test'@'%'identifiedby'yourpassword'withgrantoption;请注意,上述命令中的lo......
  • mysql或者mariadb修改密码不生效
    /etc/init.d/mysqlstop vim/etc/my.cnf添加skip-grant-tablesmysql-urootusemysql;updateusersetpassword=PASSWORD("mynewpassword")whereUser='root';updateusersetplugin="mysql_native_password";flushprivileges;或者/etc/......