亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

請教批量更新數據庫方案

請教批量更新數據庫方案

12345678_0001 2018-08-20 09:06:02
需求是這樣的,要把一批數據導入數據庫(約1萬條),每一條數據是由幾個表的字段組成的,示例如下:表AID A1 A2表BID B1 B2 B3 B4 AID(外鍵)現在要導入的數據格式為A1 A2 B1 B2 B3 B4請問有沒有比較好的解決方案,謝謝!
查看完整描述

2 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

一、可以用游標,一條條insert,每次兩個表。

二、關聯表更新,增加一個源表主鍵Xid

 

use testdb2
go
/*******************建立測試數據***[email protected]***********************/
IF NOT OBJECT_ID('[TBXXX]') IS NULL
   DROP TABLE [TBXXX]
GO
CREATE 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
)
go

INSERT INTO TBXXX
SELECT 'a1',replicate('A1',6),replicate('B1',4),replicate('B1',5) union ALL
SELECT 'a2',replicate('A2',6),replicate('B2',4),replicate('B2',5) union ALL
SELECT 'a3',replicate('A3',6),replicate('B3',4),replicate('B3',5) union ALL
SELECT 'a4',replicate('A4',6),replicate('B4',4),replicate('B4',5)
go

IF NOT OBJECT_ID('[tbA]') IS NULL
   DROP TABLE [tbA]
GO
CREATE TABLE [tbA](
[Aid] int identity(1,1) primary key,
[A1] NVARCHAR(20) null,
[A2] NVARCHAR(20) null,
[Xid] int null
)
go


IF NOT OBJECT_ID('[tbB]') IS NULL
   DROP TABLE [tbB]
GO
CREATE TABLE [tbB](
[Bid] int identity(1,1) primary key,
[B1] Nvarchar(10) null,
[B2] NVARCHAR(20) null,
[Aid] int null,
[Xid] int null
)
go

insert 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.B2
FROM [TBXXX] t INNER JOIN [tbB] on t.Xid=[tbB].Xid

ALTER table [tbA]
drop column Xid
GO

ALTER table [tbB]
drop column Xid
GO

SELECT * FROM [tbA]
select * FROM [tbB]


查看完整回答
反對 回復 2018-08-22
?
慕蓋茨4494581

TA貢獻1850條經驗 獲得超11個贊

這個用連表應該可以解決的吧!

查看完整回答
反對 回復 2018-08-22
  • 2 回答
  • 0 關注
  • 691 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號