C#把mongodb导入sqlsever

来源:互联网 发布:js利用gettime() 月 编辑:程序博客网 时间:2024/05/20 04:13


原理很简单   就是把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+"'";