是否有 MongoDB 的 ETL?...
8 回答
Pentaho 数据集成支持 MongoDB(参见文档http://wiki.pentaho.com/display/EAI/Pentaho+Data+Integration+Steps)。
同样 Talend 支持 MongoDB:https ://github.com/adrien-mogenet/tMongoDBConnection
对于 CSV 文档的简单插入,我建议查看Mongo wiki页面Import Export Tools。
对于更复杂的事情,我建议用您最熟悉的语言编写临时脚本。
Pentaho Data Integration 和 Talend 似乎只支持从 MongoDB 读取,不支持写入。
另一个刚刚宣布支持 MongoDB 的工具是 DataCleaner,它同时支持读写操作。它并没有将自己定位为一个 ETL 工具,而更像是一个数据质量分析工具,但它也确实具有类似 ETL 的功能。
我使用 python 脚本创建了自己的 ETL 解决方案,以将数据从 MySQL 传输到 MongoDB。在我心中真是太棒了。
基本上,我使用以下两个 python 模块来访问 mysql 和 mongodb:
- pymongo
- python-mysql.connect
它们都可以从官方 Ubuntu 存储库安装。
我为Scriptella ETL工具创建了 MongoDB 驱动程序。它可在https://github.com/scriptella/scriptella-mongodb获得。
从关系表迁移数据的示例:
<connection id="out" url="mongodb://localhost/test" classpath="../lib/scriptella-mongodb-driver.jar:../lib/mongo-java-driver-2.10.1.jar" />
<query connection-id="in">
SELECT * FROM USERS
<script connection-id="out">
{
operation: 'db.collection.save',
collection: 'users',
data: {
user_id: '?user_id',
name: '?name'
}
}
</script>
</query>
这个 PHP 程序自动将 MongoDB 数据库传输到 MySQL,它内省 Mogno 集合,创建 MySQL 模式并传输数据。它只做 1 级深(0 级和 1 级),不迁移更深的嵌套:
Pentaho DI 支持 MongoDB 读取。我不确定这些写入。我认为考虑到 MongoDB 的底层结构而不是传统的 RDBMS,您可能最好使用 python/java 寻找自定义 ETL 流程/脚本,而不是使用可能无法满足他们要求的现成工具。最终,一旦流程成熟并针对 mongoDb 进行了多次测试,BI-ETL 市场中的这些参与者之一将在他们的工具中使用它
MongoSyphon 是一个轻量级的开源 ETL 工具,可将数据转换为 JSON 或 XML 格式的文档。
它也可以反过来,将文档直接发送到 MongoDB,这与其他尝试创建关系结构的 ETL 工具不同。除了 MongoSyphon,我们还可以使用这些处理相同的所有工具,例如:
- 运输车
- 海沃
- 数据
- 爬行者
- 全方位
- 同步
- Pentaho