C#把mongodb导入sqlsever


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



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

格式:

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


C#把mongodb导入sqlsever_第1张图片


 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+"'";


 


你可能感兴趣的:(mongodb,C#)