这个问题有两个方面。
数据迁移
您的第一步将是“定义 RDBMS 模式”,但您打算走多远?众所周知,电子表格是未标准化的,因此有很多重复。您在另一个问题中说“数据结构松散,没有明确的约束。” 如果您想将其转换为严格定义的模式(至少 3NF),那么您将不得不进行一些清理。SQL 是数据操作的最佳工具。
我建议您构建两个临时表,每个工作表一个。尽可能松散地定义列(基本上是大字符串),以便轻松加载电子表格的数据。将数据加载到临时表中后,您可以运行查询来评估数据质量:
- 有多少个重复的主键?
- 有多少种不同的数据格式?
- 查找代码是什么?
- 第二个工作表中的所有行在第一个工作表中都有父记录吗?
- 代码格式、数据类型等的一致性如何?
- 等等。
这些调查将为您编写用于填充实际模式的 SQL 奠定良好的基础。
或者可能是数据太无望了,以至于您决定只使用这两个表。我认为这是一个不太可能的结果(大多数应用程序都有一些底层结构,我们只需要深入挖掘)。
数据加载
最好的办法是将电子表格导出为 CSV 格式。Excel 有一个向导来执行此操作。使用它(而不是做Save As...
)。如果电子表格包含任何自由文本,您可能会有包含逗号的句子,因此请确保选择一个真正安全的分隔符,例如^^~
大多数 RDBMS 工具都具有从 CSV 文件导入数据的功能。Postgresql 和 Mysql 是非政府组织的明显选择(我认为成本是一个考虑因素),但 SQL Server 和 Oracle 都提供免费(如果受限制)Express 版本。SQL Server 显然与 Excel 具有最佳集成。Oracle 有一个称为外部表的漂亮特性,它允许我们定义一个表,其中数据保存在 CSV 文件中,从而无需临时表。
要考虑的另一件事是 Google App Engine。这使用 Big Table 而不是 RDBMS,但这可能更适合您的结构松散的数据。我建议这样做是因为您提到 Google Docs 作为替代解决方案。GAE 是一个有吸引力的选择,因为它是免费的(或多或少,如果使用量超过一些非常慷慨的阈值,他们就会开始收费),并且它将解决与其他非政府组织的应用程序共享问题。显然,您的组织可能对 Google 托管他们的数据有些疑虑。这取决于他们在哪个领域开展业务,以及信息的敏感性。