我们正在尝试将 Rocket U2 数据库中的数据移植到 SQL 服务器。根据我在Wikipedia上阅读的内容,数据存储为分隔的文本文件。
我们正在考虑以下替代方案:
- 购买 Rocket U2 工具包
- 自己解析文本文件
- 将文本文件导入 Excel
- 依赖第三部分库
上述每个选项的可行性如何?我们可以考虑其他替代方案吗?
这些文件是散列表而不是纯分隔文本文件。您是否安装了 Rocket 数据库或仅安装了数据文件本身?从 Rocket U2 文件中提取数据的方法有很多,但您确实需要了解 MultiValued 的数据结构。通过雇用熟悉环境的人,您可能会更快。LinkedIn 中有一个 MultiValue 用户组和 U2 用户组。
除此之外,我建议研究 Rocket U2 Toolkit for .NET 工具,作为从 Microsoft 角度访问数据的一种方式。这是一般信息的链接:http ://www.rocketsoftware.com/products/rocket-u2-toolkit-net
还可以在 StackOverflow 上搜索标签 u2netdk。
我们的团队创建了一个从 .net 应用程序执行以下操作的流程:
从 unidata 模式创建模型(想想数据结构),包括对关联中的多值和子多值进行建模。
使用这些模型生成一个 sql server db。
使用这些模型来创建 html 文档。
使用 LIST 命令将数据从我们的 unidata db 提取到文件中。
执行 Rsync 将数据文件从 unix 服务器移动到我们的 windows 服务器。
从文件中读取,截断任何现有的 sql 数据并使用模型执行 sql 批量插入。
我们将此过程用于日常迁移,因此步骤 2 和 3 实际上只执行一次(或每当我们添加新文件时)。
我们的团队花了几个月的时间来完全自动化并把它做好。我们的主要挑战来自于我们对单数据或多值数据库的了解为零。大部分复杂性是解析数据文件的多值和子多值。理解关联并正确分解它们花费了我们很多时间。
我们的最终解决方案非常好,而且速度非常快。我们目前每天在不到 2 小时的时间内从超过 57 个 unidata 文件中迁移超过 2 个半演出的数据。
所以我要说的是这是可能的,但这是一项相当大的投资,除非你们拥有比我们更多的知识(这很有可能)。看起来您正在寻找一次性端口,而不是每晚迁移,所以我可能会推荐与 @jbmonco 所做的相同的方法,只需使用 Rocket 提供的 .net 工具包。