数据导入导出问题C#/SQL Server

本文关键字:SQL Server 出问题 导入 数据 | 更新日期: 2023-09-27 18:00:30

我需要为三个内部与主键/外键约束相关的数据库表实现一个导入-导出模块。

我可以使用c#/linq到xml/linq对sql轻松地完成这两部分。问题是,当我在数据库中导入导出的数据时,主键表的id正在重新生成,而没有从xml文件中获取/分配id(这是自动递增的自然过程)。为此,无法导入其他表数据/显示主键约束违反的错误。

我的目标是导入所有数据并保持主键/外键不变。

现在,有人能告诉我我能做些什么来解决这个问题吗?提前谢谢。

数据导入导出问题C#/SQL Server

您可以使用标识插入为标识列指定值。

如果为标识列指定显式值,则您自己负责解决冲突。如果数据库已经有一行包含id = 1,那么您必须决定如果导入还包含id = 1该怎么办:SQL Server只会抛出一个错误。

我们总是将BCP操作用于此类任务。

我建议不要让你的autoincrement成为主键,而是有一个单独的主键,它可以以其他方式定义。。。那么您就不会有自动递增的问题

如果不需要XML和SQL中的ID匹配(只需要关系),可以使用SCOPE_IDENTITY()并维护从XML ID到SQL ID的映射,以便在其他表中正确插入外键列。