Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.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
Sql 插入行-批量还是逐行插入?_Sql_Sql Server_Bulkinsert_Sql Insert - Fatal编程技术网

Sql 插入行-批量还是逐行插入?

Sql 插入行-批量还是逐行插入?,sql,sql-server,bulkinsert,sql-insert,Sql,Sql Server,Bulkinsert,Sql Insert,我使用存储在文件中的数百万条insert语句将数据插入数据库。是逐行插入还是批量插入更好?我不确定其含义是什么。 对这个方法有什么建议吗?现在,我一次执行50K条语句。一般来说,如果您知道插入不会因某种原因(例如无效数据等)失败,那么批量插入会更好。如果要逐行进行,您要做的是打开数据连接,添加行,关闭数据连接。冲洗,在你的情况下重复数万次(或更多?)。与一次打开连接、一次转储所有数据,然后一次关闭连接相比,这是一个巨大的性能损失。如果您的数据不是一组干净的数据,那么最好逐行进行,因为如果您有需要

我使用存储在文件中的数百万条insert语句将数据插入数据库。是逐行插入还是批量插入更好?我不确定其含义是什么。
对这个方法有什么建议吗?现在,我一次执行50K条语句。

一般来说,如果您知道插入不会因某种原因(例如无效数据等)失败,那么批量插入会更好。如果要逐行进行,您要做的是打开数据连接,添加行,关闭数据连接。冲洗,在你的情况下重复数万次(或更多?)。与一次打开连接、一次转储所有数据,然后一次关闭连接相比,这是一个巨大的性能损失。如果您的数据不是一组干净的数据,那么最好逐行进行,因为如果您有需要清理的数据,大容量插入不会失败

一般来说,如果您知道插入不会因为某种原因(例如无效数据等)而失败,那么批量插入会更好。如果要逐行进行,您要做的是打开数据连接,添加行,关闭数据连接。冲洗,在你的情况下重复数万次(或更多?)。与一次打开连接、一次转储所有数据,然后一次关闭连接相比,这是一个巨大的性能损失。如果您的数据不是一组干净的数据,那么最好逐行进行,因为如果您有需要清理的数据,大容量插入不会失败

您肯定应该使用批量插入,而不是逐行插入。批量插入是为将文本文件中的数据导入SQL Server而设计的过程中方法,它是在线文章中描述的其他方法中最快的方法

您绝对应该使用批量插入,而不是逐行插入。批量插入是为将文本文件中的数据导入SQL Server而设计的过程中方法,它是在线文章中描述的其他方法中最快的一种

如果您使用SSI,我建议将数据流任务作为另一种可能的途径。这将允许您从平面文本文件、SQL表或其他源中移动数据,并将其映射到新表中。我发现它的性能一直都很好,我经常使用它

如果在插入之前没有创建表,我要做的是使用表创建查询(创建表…等)将执行SQL任务函数拖到我的流程中,并更新数据流函数的属性以延迟验证

只要我的数据结构是一致的,这就行了。这里有几个截图


如果您正在使用SSI,我建议将数据流任务作为另一种可能的途径。这将允许您从平面文本文件、SQL表或其他源中移动数据,并将其映射到新表中。我发现它的性能一直都很好,我经常使用它

如果在插入之前没有创建表,我要做的是使用表创建查询(创建表…等)将执行SQL任务函数拖到我的流程中,并更新数据流函数的属性以延迟验证

只要我的数据结构是一致的,这就行了。这里有几个截图


另一种选择是使用批处理,在较小的记录集上使用基于集合的处理(例如每次5000条记录)。这可以防止服务器被完全锁定,并且一次比一条记录快

另一种选择是使用批处理,在较小的记录集上使用基于集合的处理(例如每次5000条记录)。这可以防止服务器被完全锁定,并且一次比一条记录快

你从哪里得到insert语句?平锉?加载整个文件,不要执行数以百万计的insert语句。@GoatCO-它实际上在SSIS(一种ETL工具)中。我想批量插入。但是,其他人希望逐行插入。大容量插入有时会导致内存不足错误。现在已经讲清楚了,我并不完全熟悉如何将数据从SSI内部传输到数据库,但如果有批量大小选项,您应该查找该选项,并将其设置为一次处理数百到数千条记录(取决于您认为服务器可以处理的内容)@user2366842-是的。但最终,sql server将运行这些语句。因此,我需要知道批量还是逐行对sql server更好。从哪里获得insert语句?一个平面文件?加载整个文件,不要执行数百万条insert语句。@GoatCO-它实际上在SSIS(一个ETL工具)中。我想使用批量Insert。但是,其他人希望逐行插入。大容量插入有时会导致内存不足错误。现在已经清楚了,我并不完全熟悉将数据从SSI内部传输到数据库的过程,但是如果有批量大小选项,您应该查找该选项,并将其设置为处理数百到数千条记录一开始(取决于您认为服务器可以处理的内容)@user2366842-是的。但最终,sql server将运行这些语句。因此,我需要知道批量或逐行插入是否更适合sql server。请参阅上面的答案。批量插入可能不是每个情况的正确选择。请参阅上面的答案。批量插入可能不是每个情况的正确选择。