如问题所述,我有一个文本文件(700 mb),我正在使用c#读取,我正在解析250万行,将每行转换为一个类,序列化该类,然后插入sql-server-2012数据库。
我要插入的表有两列,看起来像:
{Auto_Increment_id: Serialized Byte Array}
我目前的策略是解析大约10000行,将它们插入数据库,然后重复。这要花大约3个小时,所以我相信有更有效的方法。
我的一个想法是将插入写入一个文本文件,然后批量复制到数据库中。还有其他想法吗?
最终我想把这个过程减少到至少10 - 20分钟。这可能吗?
SqlBulkCopy。读一读。
更快——因为它写得并不聪明——是把它放入一个临时表中,然后在最后插入到最终表中。SqlBulkCopy会锁定整个表,这样可以绕过它,并允许在上传过程中使用表。
然后使用多个线程每次插入远超过10000行的块。
我在低端数据库服务器(即48gb内存,大约12个SAS磁盘-是的,这是低端)上每秒管理超过100,000行。