asp.net - 将大数据从xml文件迁移到数据库

标签 asp.net transactions informix data-migration data-integrity

问:

两周前我遇到了以下问题,考虑到性能问题和数据完整性,我不知道如何处理它。

我所做的是:

我想将数据从XML 文件迁移到数据库中的类似表

例如:

  • 我有两个节点(XML 文件):

    类(class)老师

  • 两个表(数据库)

    类(class)老师

我允许用户将 XML 文件上传到我的服务器上的文件夹,然后我开始读取 XML 文件并将数据插入到我的数据库中。

问题是:

如果在插入操作过程中发生故障,我想删除所有表中所有插入的记录。(或回滚)。

我开始考虑事务,每个实体的插入将通过事务执行,但我面临两个问题:

  1. 我应该将所有实体的所有插入放入一个事务中还是 交易中一个实体一个实体?(所有实体数据必须全部插入或根本不插入)对于每个上传者。

  2. 当我有大量记录时(1500 条记录)。以下 出现异常:

    This IfxTransaction has completed; it is no longer usable ,不 一个人就能修复它。

  3. 我的团队领导告诉我不要使用交易,因为它会 锁定表并且许多用户使用这些表。他想要其他的 机制。

请问我想要解决我的问题(详细解释),如何处理这种情况并维护性能问题以及数据的完整性和一致性。

最佳答案

这是我们在同一问题中使用的机制,开始将数据保存在临时表中,如果插入临时表后没有异常,则运行一个存储过程将这些临时表的内容复制到真实表中表,然后从临时表中删除*。 这样,您在使用事务机制时就不会锁定对表的访问。 还有另一种机制,但如果你使用它,你必须重新考虑所有数据库结构,它称为 CQRS(对于.NET,有一个称为 NCQRS 的 API)

关于asp.net - 将大数据从xml文件迁移到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6856004/

相关文章:

php - PDO:交易不回滚?

java - 迁移到 WildFly 8.2.0 和 Java 8 后出现 UserTransaction : javax.naming.NameNotFoundException

.net - 尽管主机说它正在监听端口,但无法使用 drda 连接到另一台计算机上的 informix

php - Codeigniter 事务

java - Entitymanager.persist 在 Informix UDR 中失败

sql - 将日期时间值插入到 informix 表中失败

asp.net - Sprite 图像质量差

c# - 多个项目之间的重复功能

c# - 当我在 VS 2010 中按 F5 时,是否可以同时在多个浏览器中进行调试?

asp.net - 母版页图像未显示在子页面上