【发布时间】:2018-09-19 02:19:25
【问题描述】:
我有通过 xml 阅读器读入数据集的 XML 数据。
生成的表有几种关系,但主要是父节点到子节点。
我计划每天读取多个文件并将这些文件合并到一个 sql server 中。它们可以很容易地被其他系统使用。
考虑到 XML 文件,例如节点子节点对每个节点都有顺序 ID
<main mainGUID='BlahWeSayItIsUnique' stuff type=1>
<children thingy Number>
<child other things>
<child other things>
children 将获得 children_Id 作为主键,child 将获得 children_id 作为关系,并将其自己的 child_Id 作为主键。这些数字在 1...n 中是连续的,因此每个 xml 文件肯定会重复这些 id 值。
那么在不重复 id 的情况下插入数据的正确方法或好方法是什么? 获取sql server最后插入的id值,然后修改内存中c#datatable中存在的数据表再插入sql?
或者有没有更好的方法,比如使用根节点的 GUID 的版本控制方法?
编辑: 我从外部来源接收 xml 文件,它们与数据一起提供。 我将这些 XML 文件读入一个数据集,该数据集基本上给了我 8 个表格,表格中的行是连续的,并且这些表格根据这个序号相互关联。
数据已经分配了顺序ID,那么如何将这些记录插入SQL数据库而不复制之前导入的xml文件?
【问题讨论】:
-
您考虑过使用数据库标准化吗?这将解决您的问题。
-
@dj79 我从外部源接收 xml 文件,它们与数据一起提供。我将这些 XML 文件读入一个数据集,该数据集基本上给了我 8 个表 - 除了一个表(我在 xml 导入中处理)之外,这些表似乎已正确规范化。您能否向我解释一下数据库的规范化如何允许我将收到的记录插入到数据库中,这些记录已经分配了顺序 ID,而不复制先前导入的 xml 文件?
标签: c# sql-server import consolidation