如何在SQLServer2005中将相似的数据大容量复制到两个表中?
我“继承”了一些我很难处理的代码。应用程序具有excel导入功能,可将成员导入到成员表中,并使用SqlBulkCopy 几个月前,添加了一个连接表,为了使应用程序正常工作,还必须在那里添加members表中的两个属性。没有硬耦合没有PK,FK-不是我的选择 我不知道如何解决这个问题,因为据我所知,你不能批量复制到两个表中,你必须分别进行。但是如何以对性能影响较小的最佳方式检索新导入成员的GUID属性以及其他属性值groupId 例如: Excel导入:如何在SQLServer2005中将相似的数据大容量复制到两个表中?,sql,sql-server-2005,sqlbulkcopy,Sql,Sql Server 2005,Sqlbulkcopy,我“继承”了一些我很难处理的代码。应用程序具有excel导入功能,可将成员导入到成员表中,并使用SqlBulkCopy 几个月前,添加了一个连接表,为了使应用程序正常工作,还必须在那里添加members表中的两个属性。没有硬耦合没有PK,FK-不是我的选择 我不知道如何解决这个问题,因为据我所知,你不能批量复制到两个表中,你必须分别进行。但是如何以对性能影响较小的最佳方式检索新导入成员的GUID属性以及其他属性值groupId 例如: Excel导入: Name Email plus more
Name
Email
plus more
表1
name
personID (GUID)
groupID (same for all imported members)
+ other attributes
表2
personID (GUID)
groupID (same for all imported members)
+ other 'new' attributes
很抱歉,这次我不能提供任何代码:/真的希望有人能给我任何建议 现在还不太清楚究竟是什么以及如何将Excel导入的数据存储到这两个表中,以及groupID来自何处
基本上-你是对的-你不能批量插入到多个表中。因此,我的看法是:
1像今天一样,从Excel批量插入到临时表中
2然后插入需要存储在表1中的信息片段,并输出将表1的位连接到表2的位所需的必要信息-如下所示:
DECLARE @Connection TABLE (GroupID INT, PersonID UNIQUEIDENTIFIER, EMail VARCHAR(500))
INSERT INTO dbo.Table1 (list of columns here)
OUTPUT Inserted.GroupID, Inserted.PersonID, Inserted.EMail
INTO @Connection(GroupID, PersonID, EMail)
SELECT
(list of columns here)
FROM
dbo.Staging
WHERE
(possibly a condition here???)
这将把Staging中的行插入到表1中,同时,它将为插入的每一行写出一些信息——GroupID、PersonID和EMail
有了这些信息,您还应该能够将您的值插入表2中:
你说得对-你不能这么做,大容量导入只能在一个表中工作。所以基本上是这样做的:1批量导入数据到一个临时表中-就像今天一样。然后2将该表从staging表拆分为两个实际的表如何以及从何处获得GroupID???你到底在干什么?从Excel导入到表1中,然后需要从该表中获取一些数据以插入到表2中??你能试着从Excel导入的一行解释一下你到底在做什么吗??所有的步骤,所有涉及的数据。。。
INSERT INTO dbo.Table2 (GroupID, PersonID, EMail, list of other columns here)
SELECT
c.GroupID, c.PersonID, c.EMail,
(list of other columns from Staging table here)
FROM @Connection c
INNER JOIN dbo.Staging s ON c.EMail = s.EMail -- or use whatever you can use to
-- connect the two sets of data
WHERE (condition) ......