【发布时间】:2013-03-18 05:15:19
【问题描述】:
注意:向下滚动到背景部分以获取有用的详细信息。假设项目使用 Python-Django 和 South,如下图所示。
导入以下 CSV 的最佳方式是什么
"john","doe","savings","personal"
"john","doe","savings","business"
"john","doe","checking","personal"
"john","doe","checking","business"
"jemma","donut","checking","personal"
进入 PostgreSQL 数据库,其中包含相关表 Person、Account 和 AccountType,考虑:
- 管理员用户可以通过自定义 UI 实时更改数据库模型和 CSV 导入表示
- 普通用户导入 CSV 文件时使用保存的 CSV 到数据库的表/字段映射
目前已经考虑了两种方法
- ETL-API 方法:为 ETL API 提供电子表格、我的 CSV 到数据库表/字段映射以及与目标数据库的连接信息。然后 API 将加载电子表格并填充目标数据库表。看着 pygrametl 我不认为我的目标是可能的。事实上,我不确定是否有任何 ETL API 可以做到这一点。
- 行级插入方法:解析 CSV 到数据库的表/字段映射,解析电子表格,并以“连接顺序”生成 SQL 插入。
我实现了第二种方法,但在算法缺陷和代码复杂性方面遇到了困难。那里有没有我想要的python ETL API?还是一种不涉及重新发明轮子的方法?
背景
我工作的公司正在寻求将 Sharepoint 中托管的数百个特定于项目的设计电子表格转移到数据库中。通过允许管理员为每个项目定义/建模数据库、在其中存储电子表格并定义浏览体验,我们即将完成满足需求的 Web 应用程序。在这个完成阶段,过渡到商业工具不是一种选择。将 Web 应用程序视为 django-admin 的替代方案,尽管它不是,它具有 DB 建模 UI、CSV 导入/导出功能、可定制的浏览和模块化代码来解决项目特定的定制问题。
实现的 CSV 导入界面既麻烦又麻烦,所以我正在尝试获得反馈并寻找替代方法。
【问题讨论】:
-
我认为你应该具体化这个问题。提取您正在寻找的最小示例并将其发布。即写一个csv样本数据和规范化所需的目标架构。
-
感谢您的建议。希望这会得到更多的关注。顺便说一句,现在更改标题。
-
这个问题仍然没有意义。设计一个模式,把它放在那里,使用它——这是一个三线和/或
psql调用。 -
这不是 3-liner,它是财富 500 强公司的企业 Web 应用程序。该模式是动态的以满足业务需求,它并没有以这种方式开始,只有管理员可以通过 UI 更改它。涉及 CSV 导入解决方案是因为架构是动态的,因此无法解决。您提供的代码使用了静态模式,并且不包含 CSV 导入代码。如果您对如何澄清问题有任何建议,我很乐意将它们纳入其中。
-
到目前为止,您还没有任何具体/唯一的标识符,这让我很担心。这两个示例中的前两个字段是说明同一个人,还是不同的人,还是未知?
"john","doe","savings","personal","john","doe","savings","business"
标签: python django postgresql etl pygrametl