Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将从文本文件解析的250万行数据插入Sql server的最快方法是什么_C#_Sql Server - Fatal编程技术网

C# 将从文本文件解析的250万行数据插入Sql server的最快方法是什么

C# 将从文本文件解析的250万行数据插入Sql server的最快方法是什么,c#,sql-server,C#,Sql Server,正如问题所述,我有一个文本文件(700 mb),我正在使用c#读取,我正在解析250万行,将每行转换为一个类,序列化该类,然后插入sql-server-2012数据库 我插入的表有两列,如下所示: {Auto_Increment_id: Serialized Byte Array} 我目前的策略是解析大约10000行,将它们插入数据库,然后重复。这大约需要3个小时,所以我相信有一个更有效的方法 我的一个想法是将插入内容写入文本文件,并将其批量复制到数据库中。还有其他想法吗 最终,我想把这个过

正如问题所述,我有一个文本文件(700 mb),我正在使用c#读取,我正在解析250万行,将每行转换为一个类,序列化该类,然后插入sql-server-2012数据库

我插入的表有两列,如下所示:

{Auto_Increment_id: Serialized Byte Array} 
我目前的策略是解析大约10000行,将它们插入数据库,然后重复。这大约需要3个小时,所以我相信有一个更有效的方法

我的一个想法是将插入内容写入文本文件,并将其批量复制到数据库中。还有其他想法吗


最终,我想把这个过程缩短到至少10-20分钟。这可能吗

SqlBulkCopy。读一读。在文件中

更快——因为它不是真正的智能编写——是将其放入一个临时表中,然后在插入的最后插入到最后一个表中。SqlBulkCopy锁定整个表,这将绕过它,并允许在上载期间使用该表

然后使用多个线程来插入每次超过10000行的块


我在低端数据库服务器上每秒管理超过100.000行(即48gb内存,大约12张SAS光盘,是的,这是低端数据库服务器)。

SqlBulkCopy。读一读。在文件中

更快——因为它不是真正的智能编写——是将其放入一个临时表中,然后在插入的最后插入到最后一个表中。SqlBulkCopy锁定整个表,这将绕过它,并允许在上载期间使用该表

然后使用多个线程来插入每次超过10000行的块


我在一台低端数据库服务器上每秒管理超过100.000行(即48gb内存,大约12张SAS光盘,是的,这是低端数据库服务器)。

除了插入外,您还对这些类做了其他事情吗?如果文本文件数据已经很好,特别是如果文本数据与SQLServer的Yes兼容(或接近),则类包含基于解析文本文件的计算,这似乎需要很多额外的工作。我还计划在插入后再次使用这些类进行更激进的计算。在程序操作的代表子集上运行探查器。这将告诉你哪些部分是慢的。把你的精力集中在这些方面。除了插入外,你还做了其他的事情吗?如果文本文件数据已经很好,特别是如果文本数据与SQLServer的Yes兼容(或接近),则类包含基于解析文本文件的计算,这似乎需要很多额外的工作。我还计划在插入后再次使用这些类进行更激进的计算。在程序操作的代表子集上运行探查器。这将告诉你哪些部分是慢的。把你的精力集中在那些事情上。