如何高效实现批量插入数据,并去重

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何高效实现批量插入数据,并去重相关的知识,希望对你有一定的参考价值。

参考技术A c#,sqlserver。写一下我将前端获取到的缓存数据批量插入数据库的表。
在sqlserver数据库下,展开(可编程性)-->(类型)-->(用户自定义表类型)。建一个自定义表类型,表类型结构即是前端传过来的表格数据结构。例如:
CREATE TYPE [dbo].[DT_SAP_ASN] AS TABLE(
[GUID] [nvarchar](50) NULL,
[VBELN_SIP] [nvarchar](30) NULL,
[POSNR_SIP] [nvarchar](30) NULL
)
GO
然后再写个存储,用于调用此存储批量将前端传入的datatable缓存数据批量插入数据库的某个表。例如:
CREATE PROC [dbo].[SP_EDI_SAP_ASN]
(
@DT_SAP_ASN DT_SAP_ASN READONLY --输入参数,刚刚自定义的表类型
)
AS
BEGIN
SET NOCOUNT OFF
INSERT INTO dbo.EDI_ASN_Log
( ID ,
GUID ,
VBELN_SIP ,
POSNR_SIP ,
)
SELECT NEWID() ,
GUID ,
VBELN_SIP ,
POSNR_SIP
FROM @DT_SAP_ASN
SET NOCOUNT ON
END
当然,去重的话在inset那边select表#DT_SAP_ASN distinct一下即可

js实现数组排序并去重

遍历数组

 // 先实现冒泡排序, 后实现数组去重
function fn(arr){
  for(var i=0; i<arr.length-1;i++){
    for(var j=0;j<arr.length-1-i;j++){
      if(arr[j]>arr[j+1]){
        var temp = arr[j]
        arr[j] = arr[j+1]
        arr[j+1] = temp
      }
    }
  }
  for(var k=0;k<arr.length;k++){
    var c = arr[k];
    for(var l=k+1;l<arr.length;l++){
      if(arr[l]==c){
        arr.splice(l,1)
        l--
      }
    }
  }
  return arr
}

var arr = [1,2,5,6,8,9,10,6,5,7,4,3,5]
console.log(fn(arr))  //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Set(使成员是唯一且无序的值)

var arr = [1,2,5,6,8,9,10,6,5,7,4,3,5]
let c = [...new Set([...arr])].sort((a,b)=>{
  return a-b
})
console.log(c) //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

以上是关于如何高效实现批量插入数据,并去重的主要内容,如果未能解决你的问题,请参考以下文章

后端开发PreparedStatement的优点以及实现高效批量插入

后端开发PreparedStatement的优点以及实现高效批量插入

后端开发PreparedStatement的优点以及实现高效批量插入

Entity Framework Core 7中高效地进行批量数据插入

EF实现批量插入

批量数据插入高效 转发