我是新手,需要以下情况的指导:
我们设置了10个具有不同结构/架构的Json文件,需要将它们加载到Redshift db的10个不同表中。
有没有一种方法可以编写可遍历每个文件并将其加载到数据库中的通用脚本/作业?
例如:
文件名:abc_ <日期> .json
表名称:t_abc
文件名:xyz <日期> .json
表名称:t_xyz
以此类推。
预先感谢
答案 0 :(得分:0)
使用Talend Enterprise版本,可以从动态模式中受益。但是根据我对json -s的经验,它们通常是嵌套结构。因此,您必须弄清楚如何展平它们,一旦完成,它将变成1:1负载。但是,对于开放式工作室,由于缺少动态模式,因此无法使用。
基本上,您可以做的是:编写一些Java代码,将JSON转换为CSV。从命令行使用psql,或者如果您的Talend包含足够新的PostgreSQL JDBC驱动程序,则从中调用客户端\ COPY以加载数据。如果文件和数据库表的列顺序匹配,则无需指定有多少列即可工作,因此它是动态的,但较新的数据“流经”塔伦德。
这实际上并不酷,但从理论上讲也是可行的解决方案:如果Redshift支持JSON(Postgres支持),则可以创建一个临时表,该表具有2列:文件名,内容。一旦整个内容都在该临时表中,就可以创建INSERT-SELECT SQL,该INSERT-SELECT SQL将JSON转换为可以插入最终表的表格格式。
但是,使用工具集,您可能别无选择,只能为每个文件加载1个作业来加载这些文件。我建议为每个文件准备一份专门的工作。他们每个人都将寻找自己的文件并分别触发/安排,或者参与更大的工作,在其中扫描文件夹并为合适的文件触发合适的工作。