首页 > 数据库 >C#把mongodb导入sqlsever

C#把mongodb导入sqlsever

时间:2023-08-08 10:33:39浏览次数:33  
标签:name fills C# mongodb biaoti sqlsever data sqlStr



原理很简单   就是把mongodb中的数据提出来 插入sqlsever中



首先要在mongodb中添加mongodb字段和sqlsever字段对应的集合field。

格式:

{
  
   "sqlsever字段" : "name",
   "mongodb字段" : "name"
 }

C#把mongodb导入sqlsever_sql


MongoClient client;
            MongoServer server;
            MongoDatabase database;

            client = new MongoClient(conStr);

            server = client.GetServer();
            database = server.GetDatabase(DataConf.DataBaseName);

            var data_biaoti = database.GetCollection("field");
            var data_biaotiall = data_biaoti.FindAll();


            List<string> biaoti = new List<string>();
            List<string> nature = new List<string>();

            //把字段放入数组中
            foreach (var mongodb in data_biaotiall)
            {




                biaoti.Add(mongodb.AsBsonDocument["mongodb字段"].ToString());
                nature.Add(mongodb.AsBsonDocument["sqlsever字段"].ToString());


            }


               
            var fill_data = database.GetCollection("mongodb集合");
            var fill_dataall = fill_data.FindAll();
           
            SqlConnection conn = new SqlConnection("Data Source=计算机名;Initial Catalog=数据库名;User ID=帐号;Password=密码;");
            conn.Open();


            //提取mongodb数据
            foreach (var fill_ttdoc in fill_dataall)
            {
                DateTime dt;
                List<string> fills_data = new List<string>();


                List<string> fills_name = new List<string>();

                //把值装入stringlist中
                for (int n = 0; n < biaoti.Count(); n++)
                {
                    if (fill_ttdoc.Contains(biaoti[n]))
                    {
                        if(biaoti[n]=="时间")
                        { 
                             dt = ConvertTime(fill_ttdoc.AsBsonDocument[biaoti[n]].ToString());
                            fills_data.Add(dt.ToString());
                        }
                      
                        else
                        { 
                            fills_data.Add(fill_ttdoc.AsBsonDocument[biaoti[n]].ToString());
                        }
                       
                        fills_name.Add(nature[n]);
                    }


                }


                string sqlStr = "insert into 表名  (";

                //拼接sql---name
                for (int n = 0; n < fills_name.Count(); n++)
                {


                    if (n == (fills_name.Count() - 1))
                    {

                        sqlStr += fills_name[n].ToString();
                    }
                    else
                    {

                        sqlStr += fills_name[n].ToString() + ",";


                    }
                }
                sqlStr +=") values (";


                //拼接sql---data
                for (int n = 0; n < fills_data.Count(); n++)
                {


                    if (n == (fills_data.Count() - 1))
                    {

                        sqlStr +="'"+fills_data[n].ToString()+"'";
                    }
                    else
                    {

                        sqlStr += "'"+fills_data[n].ToString() + "',";


                    }
                }
                sqlStr += ")";


               MessageBox.Show(sqlStr);



                SqlCommand cmd = new SqlCommand(sqlStr, conn);
                //MessageBox.Show(sqlStr);
                cmd.ExecuteScalar();



              

            }


            conn.Close();
            MessageBox.Show("导入数据结束");



ConverTime函数是把类型转换成日期类型:例如把2013年5月8日 转化成2013-5-8 

关于一些对一些数据处理时的特殊转化 参考 :

对字符串保留数字小数点,有中文的日期转化等特殊数据处理


如果不是插入数据 只是对sqlsever的表进行更新时 只需要 改一下拼接的 sql语句就行了


string sqlStr = "update t_p_baseinfo_e set ";
               
                //拼接sql
                for (int n = 0; n < fills_name.Count(); n++)
                {


                    if (n == (fills_name.Count() - 1))
                    {
                         sqlStr += fills_name[n] + "='" + fills_data[n] + "'";
                        

                   


                    }
                    else
                    {
                      sqlStr +=fills_name[n] + "='" + fills_data[n] + "',";
                     }

     sqlStr += " where sqlsever_id='" + sqlseverid+"'";




 


标签:name,fills,C#,mongodb,biaoti,sqlsever,data,sqlStr
From: https://blog.51cto.com/u_16218512/7005081

相关文章

  • c#操作excel方式四-Aspose控件
     参考资料: 这位大大写得不错,还有复杂报表的生成,有兴趣的可以看看这里还有一篇Aspose基础知识的方法1:读取excel内容到datableDataTable_dt_Data;初始化表的列privatevoidinitDataTable(){_dt_Data=newDataTable();_dt_Data.Columns......
  • c#转义符积累
    常用的转义字符及其含义:\’单引号\”双引号\\反斜杠\0空\a警告(产生峰鸣)\b退格\f换页\n换行\r回车\t水平制表符\v垂直制表符c#里@表示的是:在C#中,"c:\\data"表示路径是c:\data;而@"c:\data"就表示c:\data;所以,@的作用就应该是忽略转义字符的作用......
  • c#去html标志,对字符串保留数字小数点,有中文的日期转化等特殊数据处理
    命名空间usingSystem.Text.RegularExpressions;1.我们采集到的数据比如有些日期很不规则带有中文比如2013年5月8日  2013年5月 这里提供把这类不规则的日期转化成datatime类型publicDateTimeConvertTime(stringa){DateTimedt......
  • c#操作excel方式三:使用Microsoft.Office.Interop.Excel.dll读取Excel文件
     1、引用Microsoft.Office.Interop.Excel.dll2、引用命名空间、使用别名usingSystem.Reflection;usingExcel=Microsoft.Office.Interop.Excel;  3.写入excel写入函数publicvoidToExcel(stringstrTitle){intnMax=9;intnMin=4......
  • 组态王7.5和SQLsever数据库交互
    01要完成的功能任务(1)组态王与SQL数据库建立连接将数据存入数据库中;(2)使用组态王查询数据库中存储的数据并显示在列表中。02软件组态王7.5、SQLserver201603实现方法1、组态王新建工程,然后新建记录体(图1所示) 2、建表格模板(创建数据库表格用的)如图2所示: 3、SQLser......
  • 代码覆盖率-Jacoco
    Jacoco1、什么是jacocojacoco是一个免费、开源java代码覆盖率工具。2、什么是代码覆盖率覆盖率是用来衡量测试代码对功能代码的测试情况,通过统计测试中对功能代码中行、分支、类等模拟场景数量,来量化说明测试的充分度。代码覆盖率=代码的覆盖程度,一种度量方式覆盖率简单说:跑......
  • Mac版PDF编辑器-Acrobat Pro DC 2023
    AcrobatProDC2023(pdf编辑器)是一款能让用户轻松创建和编辑多种pdf格式的实用工具,并且能够同时使用各种方法编辑大量pdf文件。AcrobatProDC是Mac上运行速度最快、处理能力最强、功能最丰富的工具之一。AcrobatProDC包括强大的图像编辑工具,可让您轻松编辑图片和视频,而......
  • AutoCAD2024软件Mac中文版最新功能介绍支持M1/2
    AutoCAD2024软件的最新功能,包括行业特定的工具集、新的自动化以及跨设备和Autodesk产品的无缝连接。AutodeskAutoCAD不仅提供出色的绘图功能,而且提供了对工程工具使用方法及工作流程进行全面优化的方式。所有这一切都使用户能够轻松地创建工程应用程序,从而帮助他们提高工作效......
  • C# 读取带CheckBox复选框控件的表格-并集成到Windows Service里面
    最近的项目要求读取xls文件内的单元格,并且单元格旁边会有复选框标识类型。搜了下只有java的POI有例子,NOPI看项目文档好像是没有实现读取控件的功能。java实现POI POI如何解析出excel中复选框是否被选中https://blog.csdn.net/qq_29832217/article/details/104413475 C#导......
  • Siemens 西门子S7-200 PLC使用高速脉冲输入测量瞬时流量
    西门子S7-200PLC高速计数功能除用于常见的运动控制系统转速测量之外,在流量计量方面也有着广泛的用途。由于PLC内部没有相应的算法来计算频率,因此,测定脉冲输出信号的流量计的瞬时流量就需要在STEP7Micro/WINSMART中通过以下三部分编程来实现:1、定义高速计数器计数流量计输出......