Database 用1000万行填充数据库表的最快方法

Database 用1000万行填充数据库表的最快方法,database,performance,language-agnostic,Database,Performance,Language Agnostic,用1000万行填充数据库表的最快方法是什么?我询问的是这项技术,但也询问任何特定的数据库引擎,这些引擎允许以尽可能快的速度完成这项工作。我不要求在初始数据表填充期间对此数据进行索引。使用MySQL或MS SQL和嵌入式函数在数据库引擎内生成记录。或生成文本文件(类似cvs的格式)然后使用大容量复制功能。最快的方法可能是运行带有SELECT FROM的INSERT sql语句。我已经多次生成测试数据来填充来自其他数据库甚至同一数据库的表。但这一切都取决于您自己数据的性质和可用性。在我的情况下,我有

用1000万行填充数据库表的最快方法是什么?我询问的是这项技术,但也询问任何特定的数据库引擎,这些引擎允许以尽可能快的速度完成这项工作。我不要求在初始数据表填充期间对此数据进行索引。

使用MySQL或MS SQL和嵌入式函数在数据库引擎内生成记录。或生成文本文件(类似cvs的格式)然后使用大容量复制功能。

最快的方法可能是运行带有SELECT FROM的INSERT sql语句。我已经多次生成测试数据来填充来自其他数据库甚至同一数据库的表。但这一切都取决于您自己数据的性质和可用性。在我的情况下,我有足够的r收集数据的ows,其中一些随机行选择的select/insert例程对真实数据进行了半巧妙的应用,快速生成了良好的测试数据。在某些情况下,表数据是唯一标识的,我使用中间表和频率分布排序来消除不常见的名称等(消除了带有group by的计数小于或等于2的情况)

此外,它还提供了一个实用工具,可以按您的要求执行操作。它不是免费的,我认为它是Sql Server特有的,但它们的工具是一流的。值得花费。它还有一个免费试用期


如果你不想付费或者不想使用他们的工具,你可以很快建立自己的应用程序。他们所做的并不是什么神奇的事情。一个优秀的开发人员应该能够在一两天内完成一个类似功能的应用程序,尽管是alpha/硬编码版本…

你可能对这个问题的答案感兴趣。它着眼于上传一个mas将CSV文件加载到SQL server(2005)数据库。对于SQL server,SSIS DTS包似乎是将数据批量导入数据库的最快方法。

使用SQL将大量数据加载到数据库通常会导致性能不佳。为了快速执行操作,您需要使用SQL引擎。大多数数据库(我认为包括Firebird)能够将所有数据备份到一个文本(或者可能是XML)文件中,并从这样的转储文件中恢复整个数据库。由于恢复过程不需要事务感知,并且数据不表示为SQL,所以通常非常快

我将编写一个脚本,手动生成转储文件,然后使用数据库的恢复实用程序加载数据


经过一段时间的搜索,我发现,这似乎完全可以做到这一点-您只需要生成一个CSV文件,然后使用FBExport工具将该数据导入数据库。

这完全取决于您的数据库。例如,Oracle有一种称为直接路径加载(),它有效地禁用了索引,如果我理解正确,它将构建二进制结构,并将在客户端写入磁盘,而不是通过发送SQL


结合分区和重建每个分区的索引,我们能够加载10亿行(我不骗你)数据库在一个比较短的顺序中。1000万行没有什么。

你能详细说明你试图填充数据库的数据的性质吗?如果是垃圾数据,只需在服务器上运行函数来插入虚拟行。如果数据被困在文件中,考虑供应商特定的大容量导入/BCP工具。我现在有:FiiBIRd数据库,希望用数据填充它以进行测试。