数据库批量添加数据的方法
使用查询列表的办法来批量添加数据。
比如:
insert into 表名 (字段名) select 字段名 from 自定义表
- 在数据库函数这里写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
- 批量插入数据时,现将列表值分割,再从分割后的表里进行插入。
insert into 表1名 ( 字段名)
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 JOIN 表2名 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) //字段分别对应{}里的值
- 下面介绍SQL server的一个免费插件,可以快速搜索定位SqlServer里面的文件名,关键字,函数等
https://www.red-gate.com/products/ SqlServer查询工具