这与我的另一个问题相关何时从电子表格迁移到 RDBMS https://stackoverflow.com/questions/2395607/when-to-switch-from-spreadsheet-to-rdbms
决定从 Excel 书籍转向 RDBMS 后,我建议这样做。
现有数据松散地分布在工作簿的两张表中。第一张表包含主要记录。第二张表允许附加数据。
我的目标 DBMS 是 mysql,但我愿意接受建议。
- 定义 RDBMS 模式
- 例如,定义与数据库交互的 Web 服务,以便同样可用于 UI 和迁移。
- Define a migration script to
- 从电子表格中读取每组关联行
- 应用验证/约束
- 使用 Web 服务写入 RDBMS
- 在电子表格中定义宏/函数/模块以尽可能强制验证。这将允许在新系统出现时使用现有系统。同时,(我希望)最终进行迁移时,它会减少迁移失败的情况。
你会采取什么策略?
这个问题有两个方面。
数据迁移
您的第一步将是“定义 RDBMS 模式”,但是您打算走多远?众所周知,电子表格未标准化,因此存在大量重复。您在另一个问题中说“数据结构松散,没有明确的约束”。如果你想转型that进入一个严格定义的模式(至少 3NF),那么你将不得不做一些清理。 SQL 是数据操作的最佳工具。
我建议您构建两个暂存表,每个工作表一个。尽可能宽松地定义列(基本上是大字符串),以便轻松加载电子表格的数据。将数据加载到临时表后,您可以运行查询来评估数据质量:
- 有多少重复的主键?
- 有多少种不同的数据格式?
- 查找代码是什么?
- 第二个工作表中的所有行是否在第一个工作表中都有父记录?
- 代码格式、数据类型等的一致性如何?
- 等等。
这些调查将为您编写 SQL 奠定良好的基础,您可以使用 SQL 来填充实际的架构。
或者,数据可能非常令人绝望,以至于您决定只使用这两个表。我认为这是一个不太可能的结果(大多数应用程序都有一些底层结构,我们只需要深入挖掘即可)。
数据加载
最好的办法是将电子表格导出为 CSV 格式。 Excel 有一个向导可以执行此操作。使用它(而不是做Save As...
)。如果电子表格包含任何自由文本,您很可能会得到包含逗号的句子,因此请确保选择一个真正安全的分隔符,例如^^~
大多数 RDBMS 工具都具有从 CSV 文件导入数据的功能。 Postgresql 和 Mysql 是非政府组织的明显选择(我认为成本是一个考虑因素),但 SQL Server 和 Oracle 都有免费(如果受到限制)的 Express 版本。 SQL Server 显然与 Excel 的集成最好。 Oracle 有一个称为外部表的绝妙功能,它允许我们定义一个将数据保存在 CSV 文件中的表,从而无需临时表。
另一件需要考虑的事情是 Google App Engine。它使用大表而不是 RDBMS,但这可能更适合松散结构的数据。我建议这样做是因为您提到 Google Docs 作为替代解决方案。 GAE 是一个有吸引力的选择,因为它是免费的(或多或少,如果使用量超过一些非常慷慨的阈值,他们就会开始收费),并且它将解决与其他非政府组织的应用程序共享问题。显然,您的组织可能对 Google 托管其数据有一些疑虑。这取决于他们所处的领域以及信息的敏感性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)