SQL server 脚本自动转换成适合MySQL脚本的方法

本人新手小白一枚。刚实习两个星期,目前接触到的东西,比较迷茫,在此将自己实习过程学到的东西,简单做个总结,希望有路过的大佬,也可以指点指点。(其实这就是俺的一些笔记,应该叫做菜鸟实习第一天)

好了,开始代码。

第一步,先在IServices写上接口:

Task<string> release();//release为方法名

第二步,先在服务层Services写上方法:

此方法是将SQL server的列名、表数据分别查出来。再赋值给不同的参数。最后将数据拼接成适应MySQL的sql语句。


public List<string> DataTableToInsertSql(DataTable dt, string table)
        {
            List<string> result = new List<string>();

            string cols = string.Join(",", dt.Columns.Cast<DataColumn>().Select(x => $"{x.ColumnName}").ToArray());//提取出列名

            foreach (DataRow dr in dt.Rows)
            {
                var vals = string.Join(",", dr.ItemArray.Select(x =>//提取出表中数据(连接字符串)
                {
                    if (DBNull.Value.GetType() == x.GetType())//判断是否为空,为空插入null值
                    {
                        return "null";
                    }
                    else
                    {
                        return $"'{x}'";
                    }
                }).ToArray());
                result.Add($"insert into {table} ({cols}) values({vals})");//将表名和数据拼接为mysql的语法
            }
            return result;
        }
var sql = "select * from base_menu";
            DataTable dt = await db.GetDataTableAsync(sql);
           List<string> list_base_menu = DataTableToInsertSql(dt, "base_menu");// 其中DataTableToInsertSql为方法,调用此方法,此语句是将dt中查数据表,在此给它一个表名。
            sql = "select * from base_module";
            dt = await db.GetDataTableAsync(sql);
            List<string> list_base_module = DataTableToInsertSql(dt, "base_module");
            sql = "select * from base_modulebutton";
            dt = await db.GetDataTableAsync(sql);
            List<string> list_base_modulebutton = DataTableToInsertSql(dt, "base_modulebutton");
            StringBuilder sb = new StringBuilder();
            //循环
            foreach (string s1 in list_base_menu)
            {
                sb.Append(s1+";\r\n");
            }
            foreach (string s2 in list_base_module)
            {
                sb.Append(s2 + ";\r\n");
            }
            foreach (string s3 in list_base_modulebutton)
            {
                sb.Append(s3 + ";\r\n");
            }

            string content = sb.ToString();
            string rootPath = Path.Combine(Directory.GetCurrentDirectory(), @"wwwroot/tempfiles/sqlscript.sql");//文件保存路径(将文件保存在网站上)
            try
            {
                if (!System.IO.File.Exists(rootPath))
                {
                    DirFileHelper.CreateFileContent(rootPath, content);
                }
                else // 测试用
                {
                    DirFileHelper.CreateFileContent(rootPath, content);
                }
            }
            catch (Exception)
            {
                throw;
            }
            return rootPath;

这样一段完成的,将Mysql脚本转换成SQL server脚本的方法就写好了。

这个代码也是公司员工教的,我自己呢,也是半懂半不懂。还得继续努力啊友友们