作者

Sales Engineer at Intersystems
文章 Jeff Liu · 三月 5 3m read

我从多次数据迁移中学到的东西

你好

数据迁移通常听起来像是一个简单的 "将数据从 A 转移到 B 的任务",直到你真正去做。实际上,这是一个融合了规划、验证、测试和技术精度的复杂过程。

我曾在多个项目中负责将数据迁移到在 IRIS(TrakCare)上运行的 HIS 中,在这些项目中,我认识到成功来自于纪律和自动化的结合。

以下是我想强调的几个要点。

1.从定义好的数据格式开始。

在打开第一个文件之前,确保每个人,尤其是数据提供者,都清楚地了解您所期望的确切数据格式。尽早定义模板可以避免不必要的来回奔波和返工。

虽然 Excel 或 CSV 格式很常见,但我个人认为使用制表符分隔的文本文件(.txt)上传数据是最好的。它既轻便又一致,还能避免文本字段内的逗号问题。

PatID   DOB Gender  AdmDate
10001   2000-01-02  M   2025-10-01
10002   1998-01-05  F   2025-10-05
10005   1980-08-23  M   2025-10-15

确保文件中提供的日期格式正确且在整个文件中保持不变,因为所有这些文件通常都是从 Excel 文件转换而来,而 Basic excel 用户可能会在提供错误的日期格式时犯错。错误的日期格式在转换为 horolog 时会让您恼火。

 

2.在加载数据前对其进行验证。

永远不要跳过数据验证。至少要对文件进行基本的浏览。虽然 IRIS 为我们提供了处理大量数据的性能和灵活性,但这只有在数据干净的情况下才有用。

始终在上传函数参数中保留一个标志(0 或 1)。其中 0 表示您只想验证数据而不想处理它。而 1 则表示要处理数据。

如果任何数据验证失败,请保存错误日志,它将准确地告诉你是哪个数据出错。如果你的代码不能让你找出哪些数据有错误记录,那么要找出错误记录就会非常困难。

 

3.保存详细的可搜索日志。

您可以使用global133或表格来捕获日志。确保记录了时间戳、文件名、记录(便于追踪)和状态。

如果数据较少,可以忽略成功日志,只捕获错误日志。下面是我用来存储错误日志的示例。

Set ^LOG("xUpload",+$Horolog,patId)=status_"^"_SQLCODE_"^"_$Get(%msg)

对于每次插入,我们都会有一个 SQLCODE,如果在插入时出现错误,那么我们总会从%msg 中得到一条错误信息。

这也可以在验证数据时使用。

 

4.以高效、可控的方式插入数据。

插入数据的效率不仅与速度有关,还与数据的一致性、可审计性和可控性有关。在插入之前,确保每条记录都已通过验证,并且没有跳过必填字段。遗漏必填字段可能会悄无声息地破坏关系,或导致工作流程后期出现拒收记录的情况。

执行插入时

  • 始终包含用于跟踪的 InsertDateTime 和 UpdateDateTime 字段。这有助于对账、增量更新和调试。
  • 为所有自动化或迁移相关活动维护一个专门的备份用户。这样可以更容易地跟踪审计日志中的更改,并明确区分系统操作和人工输入。
 

5.迁移/上传后进行对账。

活动完成后,在源和目标之间进行对账:

  • 记录数比较。
  • 逐字段校验和验证。
  • 参照完整性检查。

即使是一个简单的基于哈希值的比较脚本,也能帮助确认没有任何丢失或篡改。

这些都是实现平稳可靠数据迁移的一些基本但必不可少的做法。验证、适当的日志记录、一致的插入以及对主数据的关注,都会在质量和可追溯性方面产生巨大的影响。

保持清洁、自动化和完善的文档记录。其余的一切都会水到渠成。

如果您有任何关于 IRIS 数据迁移的疑问或讨论,请随时联系我!