数据库批量添加数据的方法

使用查询列表的办法来批量添加数据。
比如:

insert into 表名 (字段名) select 字段名 from 自定义表
  1. 数据库函数这里写dbo.split方法,分割字符串

在这里插入图片描述
SQL实现split函数,自定义分割字符,自定义取出第几个分割字符前的字符串
自定义取出第几个分割字符前的字符串,默认位置(0)
格式:dbo.split(字段名,‘分隔字符’,取出的第几个字符串)
如果没有分隔的字符,则返回整个字符串。
如果取出的位置字符串的位置超出Index则返回空。

USE [数据库]
GO
/****** Object:  UserDefinedFunction [dbo].[Split]    Script Date: 2021/9/7 21:04:51 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[Split]
(
 @SplitString varchar(8000),-- nvarchar(4000)
 @Separator varchar(2) = ',' 
)
RETURNS @SplitStringsTable TABLE
(
 [id] int identity(1,1),
 [value] varchar(8000)-- nvarchar(4000)
)
AS
BEGIN
    DECLARE @CurrentIndex int;
    DECLARE @NextIndex int;
    DECLARE @ReturnText varchar(8000);-- nvarchar(4000)
    SELECT @CurrentIndex=1;
    WHILE(@CurrentIndex<=len(@SplitString)) 
    BEGIN
        SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
        IF(@NextIndex=0 OR @NextIndex IS NULL)
            SELECT @NextIndex=len(@SplitString)+1;
        
        SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
        
        if(len(@ReturnText)>0)
			INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);        
        SELECT @CurrentIndex=@NextIndex+1;
    END
    RETURN;
END
  1. 批量插入数据时,现将列表值分割,再从分割后的表里进行插入。
insert into1( 字段名)
SELECT pn.value as pn,isnull(k.列名2,'') as 字段名,'{0}' as Years,'{1}'  as Months,t.value as TotalNum,pmc.value as pmc
 FROM dbo.split('{2}',',') pn
LEFT  JOIN2名 k on k.列名1=pn.value
INNER JOIN (SELECT * FROM dbo.split('{3}',',')) as t on pn.id=t.id //查找分割后的值
INNER JOIN (SELECT * FROM dbo.split('{4}',',')) as pmc on pn.id=pmc.id
INNER JOIN (SELECT * FROM dbo.split('{5}',',')) as w on pn.id=w.id
LEFT  JOIN  S_PN as sp on sp.PN=pn.value", 字段名1...字段名6) //字段分别对应{}里的值

  1. 下面介绍SQL server的一个免费插件,可以快速搜索定位SqlServer里面的文件名,关键字,函数等

https://www.red-gate.com/products/ SqlServer查询工具
在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐