我是JSON和SQLBulkCopy的新手。我有一个JSON格式的POST数据,我想使用C#在Microsoft SQL中批量复制/插入。
JSON格式:
{
"URLs": [{
"url_name": "Google",
"url_address": "http://www.google.com/"
},
{
"url_name": "Yahoo",
"url_address": "http://www.yahoo.com/"
},
{
"url_name": "FB",
"url_address": "http://www.fb.com/"
},
{
"url_name": "MegaSearches",
"url_address": "http://www.megasearches.com/"
}]
}
课程:
public class UrlData
{
public List<Url> URLs {get;set;}
}
public class Url
{
public string url_address {get;set;}
public string url_name {get;set;}
}
我怎样才能有效地做到这一点?
5条答案
按热度按时间toiithl61#
TL;DR如果数据已经表示为
DataTable
,则可以使用SqlBulkCopy
将其插入到服务器上的目标表:如果你只想加载“10到50个URL”,就不需要使用
SqlBulkCopy
--它的通用目的是消除数千个单独的插入。因此,插入而不插入
SqlBulkCopy
[并且不插入EntityFramework]可以逐个进行:要插入带有**
SqlBulkCopy
的数据**,您需要将您的数据(例如自定义类对象列表)转换为DataTable
。以下是引用Marc Gravell's answer作为此类转换的通用解决方案的示例:这里有一个很好的2013年更新使用FastMember从NuGet:
是的,这和这个正好相反;反射就足够了--或者如果您需要更快的速度,可以使用Python 2.0中的
HyperDescriptor
,或者Python 3.5中的Expression
。实际上,HyperDescriptor
应该绰绰有余。例如:
现在,将数据表示为
DataTable
,就可以将其写入服务器上的目标表:希望能有所帮助。
更新日期:
1.* @pseudonym27问题的答案:“您好,我可以使用BulkCopy类将数据追加到SQL数据库中的现有表吗?"*
是的,您可以- BulkCopy就像一个插入命令一样工作,它追加数据。
此外,如果操作出错的可能性很高(例如,插入时间长和连接问题),并且您希望尽可能少地忙碌/锁定目标表,请考虑使用中间表。当然,中间表的另一个用例是在插入之前需要进行一些数据转换。
u4vypkhs2#
使用下面的代码,可以将
List<YourClassname>
转换为DataTable:-这里,我假设alldata包含
list<YourClass>
对象,你也可以执行-objlist.Add(objYourClass)
,然后在SaveDataInTables
方法中传递sql_TableName
和数据表。这个方法将插入SQL_Table
中的所有数据。希望,这些代码帮助你!!!
csbfibhn3#
如果您使用的是〉sql server 2005,则应该使用Table valued parameters.。
qyuhtwio4#
如果只有10-50个网址,插入频率不高,你可以使用insert语句,简单而不麻烦,你可以使用一些简单快捷的语句,比如dapper。
否则,如果您需要批量复制,则需要首先从JSON创建并填充ADO .NET数据表-最好与目标sql表的架构匹配。这由您选择。
vnzz0bqm5#