我想将表从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建议......
答案 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);
}
}