数据库 – 将数据从电子表格迁移到RDBMS的策略是什么?

这与我的其他问题
when to move from a spreadsheet to RDBMS有关

决定从excel书转到RDBMS,这是我打算做的.

现有数据在工作簿中的两个页面上松散地构建.第一张包含主要记录.第二张表允许附加数据.

我的目标DBMS是mysql,但我愿意接受建议.

>定义RDBMS架构
>定义,例如,Web服务与数据库接口,因此可以同时用于UI和迁移.
>定义迁移脚本

>从电子表格中读取每组附属行
>应用验证/约束
>使用Web服务写入RDBMS

>在电子表格中定义宏/函数/模块以尽可能强制执行验证.这将允许在新的系统出现时使用现有系统.与此同时,(我希望)它将在最终实现移动时减少迁移失败.

你会采取什么策略?

最佳答案 这个问题有两个方面.

数据迁移

您的第一步将是“定义RDBMS架构”,但您将在多大程度上使用它?电子表格是众所周知的非标准化,因此有很多重复.你在另一个问题中说“数据结构松散,没有明确的限制.”如果你想将它转换为一个严格定义的模式(至少3NF),那么你将不得不做一些清理. SQL是数据操作的最佳工具.

我建议你构建两个临时表,每个工作表一个.尽可能松散地定义列(基本上是大字符串),以便加载电子表格的数据.将数据加载到临时表后,您可以运行查询来评估数据质量:

>有多少重复的主键?
>有多少种不同的数据格式?
>什么是查找代码?
>第二个工作表中的所有行都在第一个中有父记录吗?
>代码格式,数据类型等的一致性如何?
>依此类推.

这些调查将为您编写用于填充实际架构的SQL提供良好的基础.

或者可能是数据如此无望,以至于你决定坚持使用两个表.我认为这是不太可能的结果(大多数应用程序都有一些底层结构,我们只需深入挖掘).

数据加载

您最好的办法是将电子表格导出为CSV格式. Excel有一个向导来执行此操作.使用它(而不是另存为…).如果电子表格中包含任何自由文本,那么你将会有包含逗号的句子,所以请确保选择一个非常安全的分隔符,例如^^〜

大多数RDBMS工具都可以从CSV文件导入数据. Postgresql和Mysql是非政府组织的明显选择(我认为成本是一个考虑因素),但SQL Server和Oracle都是免费的(如果受限制的)Express版本. SQL Server显然与Excel具有最佳集成. Oracle有一个称为外部表的漂亮功能,它允许我们定义一个表,其中数据保存在CSV文件中,无需登台表.

另外需要考虑的是Google App Engine.这使用Big Table而不是RDBMS,但这可能更适合于松散结构化的数据.我建议这是因为您提到Google Docs作为替代解决方案. GAE是一个有吸引力的选择,因为它是免费的(或多或少,如果使用超过一些非常慷慨的门槛,他们开始收费),它将解决与其他非政府组织的应用程序共享问题.显然,您的组织可能对Google托管其数据有一些疑虑.这取决于他们在哪个领域运作,以及信息的敏感性.

点赞