C#把mongodb导入sqlsever


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



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

格式:

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




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


 


  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张小凡vip

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值