我们可以在一次拉伸中插入多个表吗?

时间:2013-12-10 14:48:32

标签: c# sql sql-server stored-procedures

我想知道一次将多个记录插入多个表的最佳方法。 这是我的情况。我有一个超过100条记录的excel文件。该文件包含用户的所有详细信息。我需要将所有记录插入相应的表(aspnet_Membership,aspnet_Users,Client,ClientAddress,ClientPaymentDetails)。我在Client表中使用aspnet_Membership的UserId。其他Client表具有外键引用。任何人都可以建议我在多个表中插入多个记录的正确和最快的方法是什么?

2 个答案:

答案 0 :(得分:0)

SP可以批量处理多个SQL语句。所以写一个SP并处理插入的所有关系和顺序。我不知道这是不是一个好主意,但如果你没办法这样做,这种方式可以。你必须确保你正在关注所有的关系,插入命令和可能的指导,这将使你的工作更难。欢呼。

答案 1 :(得分:0)

对于这种情况,我建议:

将所有数据放入xml ....使xml“完美”,从某种意义上说,存储过程没有逻辑。

将xml发送到存储过程。

让程序将xml粉碎成@variable表。

开始传播。使用@variable表执行CRUD操作。 回滚(整个事情)如果有任何错误。致力于成功。

由于aspnet_Membership使用GUID / UniqueIdentifiers,您可以在客户端创建所有关系。插入后,您不必等待@@ IDENTITY或“输出”值。

...

以下是一些xml碎化基础知识:

http://pratchev.blogspot.com/2007/06/shredding-xml-in-sql-server-2005.html

这是一个接受的答案,指向同样的方法。

c# - Best approach for a bulk update/merge on a table with high data volumne, but small change set