Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.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# 将6000万条记录导入SQL的最快方法是什么_C#_.net_Sql Server_Bulkinsert_Bcp - Fatal编程技术网

C# 将6000万条记录导入SQL的最快方法是什么

C# 将6000万条记录导入SQL的最快方法是什么,c#,.net,sql-server,bulkinsert,bcp,C#,.net,Sql Server,Bulkinsert,Bcp,我的数据库中有5-6个表,我需要用测试数据填充这些表,以便在我的应用程序中测试性能 我可以编写一个代码并进行批量插入。我的预测是,它将需要近3天的时间才能运行,所以我认为一定有一种更快的方法 有什么想法吗?根据您生成数据的方式,SSI可能是插入数据的最佳方式 此外,请确保尽可能关闭所有触发器并删除尽可能多的索引,然后重新添加它们。SSIS是一种方法,但您可以使用批量插入任务,也可以在文件中循环并调用Insert INTO语句。有BCP可用。用于一次生成和插入大量行: with table1Tes

我的数据库中有5-6个表,我需要用测试数据填充这些表,以便在我的应用程序中测试性能

我可以编写一个代码并进行批量插入。我的预测是,它将需要近3天的时间才能运行,所以我认为一定有一种更快的方法


有什么想法吗?

根据您生成数据的方式,SSI可能是插入数据的最佳方式


此外,请确保尽可能关闭所有触发器并删除尽可能多的索引,然后重新添加它们。

SSIS是一种方法,但您可以使用批量插入任务,也可以在文件中循环并调用Insert INTO语句。有BCP可用。

用于一次生成和插入大量行:

with table1Test
as (
--
-- generate some test rows
--
)
insert into table1 select ... from table1Test

BCP非常快,使用起来并不困难,而且您可以在以后从批处理文件中简单快速地运行它

SSIS是超级的,您可以使用分支和决策树构建漂亮的脚本

对于一次性情况,两者的速度相似

你会震惊于它能处理6000万的事实。使用整洁的BCP批处理文件,您可以导入,-us sql,然后修改、导出新数据,并创建不同的测试数据集。所有这些都将在几秒钟或几分钟内工作

还请记住,如果需要为bcp指定格式文件,一种方法是在表中键入两条记录,然后从该表导出bcp,从而允许bcp生成fmt文件。现在您有了该文件,可以使用它进行导入

祝你好运

马克·布林 爱尔兰
BMW R80GS 1987

你可以看看redgate工具,它们有一个叫做数据生成器的工具。它可能会帮助您不必编写自己的脚本,我相信他们已经对插入速度进行了优化


(免责声明,我与redgate没有关联,就像软件一样)。

通过事先禁用索引并在完成后重新启用索引,可以在插入大量数据时节省大量时间。在添加每一行时,它需要不断地重新平衡索引,有时需要拆分页面等。最好跳过一系列重复操作,让它在插入完成后完成一次工作


如果您很勇敢,并且确信数据是正确的,那么还可以删除任何外键关系,并在完成后将其添加回。否则,它将执行查找以检查插入的每行中每个FK值的有效性。其他限制条件也是如此。

我正在考虑这个问题。BCP快得多吗?BCP不比批量插入快。查看此链接:谢谢,奇怪,我一直认为BCP很快。BCP在提取数据方面要快得多o) 亲爱的上帝,3天的Sql插入。。。你能想象如果你必须通过一个web界面通过一个文件上传(例如PhpMyAdmin,SQLWebAdmin)来提供这个信息吗。。。祝你好运。永远不要用应用程序语言做数据库的工作,也不要让数据库做应用程序语言的工作,这是数据库的工作。