C# 将6000万条记录导入SQL的最快方法是什么
我的数据库中有5-6个表,我需要用测试数据填充这些表,以便在我的应用程序中测试性能 我可以编写一个代码并进行批量插入。我的预测是,它将需要近3天的时间才能运行,所以我认为一定有一种更快的方法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
有什么想法吗?根据您生成数据的方式,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)来提供这个信息吗。。。祝你好运。永远不要用应用程序语言做数据库的工作,也不要让数据库做应用程序语言的工作,这是数据库的工作。