请教批量更新数据库方案

需求是这样的,要把一批数据导入数据库(约1万条),每一条数据是由几个表的字段组成的,示例如下:

表A

ID A1 A2

表B

ID B1 B2 B3 B4 AID(外键)

现在要导入的数据格式为

A1 A2 B1 B2 B3 B4

请问有没有比较好的解决方案,谢谢!


12345678_0001
浏览 652回答 2
2回答

白板的微信

一、可以用游标,一条条insert,每次两个表。二、关联表更新,增加一个源表主键Xid use testdb2go/*******************建立测试数据***3w@live.cn***********************/IF NOT OBJECT_ID('[TBXXX]') IS NULL    DROP TABLE [TBXXX]GOCREATE TABLE [TBXXX]([Xid] int identity(1,1) primary key,[A1] NVARCHAR(20) null,[A2] NVARCHAR(20) null,[B1] Nvarchar(10) null,[B2] NVARCHAR(20) null)goINSERT INTO TBXXXSELECT 'a1',replicate('A1',6),replicate('B1',4),replicate('B1',5) union ALLSELECT 'a2',replicate('A2',6),replicate('B2',4),replicate('B2',5) union ALLSELECT 'a3',replicate('A3',6),replicate('B3',4),replicate('B3',5) union ALLSELECT 'a4',replicate('A4',6),replicate('B4',4),replicate('B4',5) goIF NOT OBJECT_ID('[tbA]') IS NULL    DROP TABLE [tbA]GOCREATE TABLE [tbA]([Aid] int identity(1,1) primary key,[A1] NVARCHAR(20) null,[A2] NVARCHAR(20) null,[Xid] int null)goIF NOT OBJECT_ID('[tbB]') IS NULL    DROP TABLE [tbB]GOCREATE TABLE [tbB]([Bid] int identity(1,1) primary key,[B1] Nvarchar(10) null,[B2] NVARCHAR(20) null,[Aid] int null,[Xid] int null)goinsert into [tbA] select A1, A2,XId from [TBXXX]insert into [tbB] (Aid,Xid) select AID,Xid from [tbA]----select * FROM [tbB]update [tbB] SET B1=t.B1,B2=t.B2FROM [TBXXX] t INNER JOIN [tbB] on t.Xid=[tbB].XidALTER table [tbA]drop column XidGOALTER table [tbB]drop column XidGOSELECT * FROM [tbA]select * FROM [tbB]

慕盖茨4494581

这个用连表应该可以解决的吧!
打开App,查看更多内容
随时随地看视频慕课网APP