使用C#从SQL Server迁移到mongodb

时间:2013-06-05 08:52:53

标签: c# sql-server mongodb mongodb-.net-driver data-migration

我想将表从SQL Server迁移到MongoDB。我使用下面的代码,它工作正常:

string strQueryInline = "select * from "+ddl_table.SelectedValue +"";
SqlDataAdapter adpt = new SqlDataAdapter(strQueryInline, con);
DataTable dt = new DataTable();
adpt.Fill(dt);

var collection = db.GetCollection<BsonDocument>(txt_value.Text);

try
{
    foreach (DataRow dr in dt.Rows)
    {
        BsonDocument bson = new BsonDocument();

        for (int i = 0; i < dr.ItemArray.Count(); i++)
        {
            bson.Add(dr.Table.Columns[i].ColumnName, dr[i].ToString());
        }
        collection.Insert(bson);
    }
}

但问题是它使用与SQL Server中相同的名称和列名。但我想为表格使用不同的名称,并为mongo集合中的字段使用一些不同的名称。我搜索了一些链接,但我无法达到确切的解决方案......

plz建议......

1 个答案:

答案 0 :(得分:0)

我不确定你在问什么。您是否想要从sql表中的列名称为mongo文档中的属性设置不同的名称?

如果这是您想要的,那么我不知道如何自动完成。只需添加一个字典,它将使用mongo属性名称映射sql列名:

// ...
Dictionary<string, string> _mapping = new Dictionay<string, string>();
_mappaing.Add("columnA", "propertyA");
// and so on

// ...

try
{
    foreach (DataRow dr in dt.Rows)
    {
        BsonDocument bson = new BsonDocument();

        for (int i = 0; i < dr.ItemArray.Count(); i++)
        {
            // here use the mapped name instead of the colmn name
            bson.Add(_mapping[dr.Table.Columns[i].ColumnName], dr[i].ToString());
        }
        collection.Insert(bson);
    }
}