是否可以使用复制和粘贴列表从Microsoft SQL Server Management Studio向表中执行大容量插入?

inb24sb2  于 2022-11-21  发布在  SQL Server
关注(0)|答案(3)|浏览(171)

我经常会从Excel清单中取得需要在数据表中更新的名称清单,最后我会建立SSIS程式,将档案读入临时数据表,并以这种方式执行。但是,有没有方法可以直接从Management Studio将名称复制并贴到数据表中呢?例如:

create table #temp (personID int, userName varchar(15))
Insert
Into #temp (userName)
values (
'kmcenti1',
'ladams5',
'madams3',
'haguir1',
)

显然,这是行不通的,但我已经尝试了不同的变化,似乎没有工作。

rkttyhzu

rkttyhzu1#

这里有一个字符串操作较少的选项。

Declare @List varchar(max) = '
kmcenti1
ladams5
madams3
haguir1
'

Insert into #Temp (userName)
Select username=value
  From  string_split(replace(@List,char(10),''),char(13))
 Where Value <>''

对于多个列源:

-- This is a copy/paste from Excel --
-- This includes Headers which is optional --
-- There is a TAB between cells --

Declare @List nvarchar(max) = '
Name    Age email
kmcenti1    25  kmcenti1@gmail.com
ladams5 32  ladams5@gmail.com
madams3 18  madams3@gmail.com
haguir1 36  haguir1@gmail.com
'

Select Pos1 = JSON_VALUE(JS,'$[0]')
      ,Pos2 = JSON_VALUE(JS,'$[1]')  -- could try_convert(int)
      ,Pos3 = JSON_VALUE(JS,'$[2]')
 From  string_split(replace(replace(@List,char(10),''),char(9),'||'),char(13)) A
 Cross Apply (values ('["'+replace(string_escape(Value,'json'),'||','","')+'"]') ) B(JS)
 Where Value <>''
   and nullif(JSON_VALUE(JS,'$[0]'),'')<>'Name'

结果

bhmjp9jg

bhmjp9jg2#

这沿着你想要的吗

create table #temp (personID int identity(1,1), userName varchar(15))
insert into #temp (userName)
select n from (values 
('kmcenti1'),
('ladams5'),
('madams3'),
('haguir1'))x(n);

这假定您希望为您生成ID,因为它不在您的数据中。

s3fp2yjn

s3fp2yjn3#

您的SQL语句不起作用(只有一行)。但我有一个解决办法。在Excel中使用公式构建您需要的内容。
假设用户ID位于A列:
在单元格B2中,插入以下公式:

="('"&A1&"'),"

然后将公式向下拖动到列表中。
转到SSMS并键入:

insert into [your table](userName) values

然后从Excel中粘贴到B列,并删除最后一个逗号。

相关问题