sqlserver如何给多张表随机插入大批量数据

sqlserver如何给多张表随机插入大批量数据,第1张

1获取所有非系统表的表名

Select Name FROM SysObjects Where XType='U' orDER BY Name

2随机找出某一张表A 在查询出表A内所有字段

SELECT syscolumnsname , -- 列名 即对应的字段名

systypesname , --字段类型

syscolumnsmax_length , -- 字段最大长度

syscolumnsscale , --字段规模 如decimal(10,2)这里的2即是精确到2位

syscolumnsis_nullable , -- 是否可为空

syscolumnsis_identity --是否是自增列 针对非guid的主键(如果主键是guid 这一列无法判断是否是主键 当然如果你的表设计的很规范 就可以提前知道哪个字段是主键)

FROM syscolumns ,

systables ,

systypes

WHERE systablesobject_id = syscolumnsobject_id

AND systypesuser_type_id = syscolumnsuser_type_id

AND systablesname = 'XXXXXX' -- 此处XXX是表名

3循环字段 根据不同类型的字段插入不同的数据 至于条数在循环字段的时候处理吧

4愉快的插入数据吧 当然 你的insert语句是动态的哦~~~

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 dboEDI_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一下即可

方案一、循环导入

实现方式是利用数据库访问类调用存储过程,利用循环逐条插入。很明显,这种方式效率并不高

方案二、使用Bulk插入

bulk方法主要思想是通过在客户端把数据都缓存在Table中,然后利用SqlBulkCopy一次性把Table中的数据插入到数据库,效率非常高

方案三:

利用SQLServer2008的新特性--表值参数(Table-Valued Parameter)。表值参数是SQLServer2008才有的一个新特性,使用这个新特性,我们可以把一个表类型作为参数传递到函数或存储过程里。

方案四:

对于单列字段,可以把要插入的数据进行字符串拼接,最后再在存储过程中拆分成数组,然后逐条插入。查了一下存储过程中参数的字符串的最大长度,然后除以字段的长度,算出一个值,很明显是可以满足要求的,只是这种方式跟第一种方式比起来,似乎没什么提高,因为原理都是一样的。

方案五:

考虑异步创建、消息队列等等。这种方案无论从设计上还是开发上,难度都是有的。

以上就是关于sqlserver如何给多张表随机插入大批量数据全部的内容,包括:sqlserver如何给多张表随机插入大批量数据、如何高效实现批量插入数据,并去重、如何在SQL Server中批量导入数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9684956.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-30
下一篇 2023-04-30

发表评论

登录后才能评论

评论列表(0条)

保存