我正在使用水壶转换将CSV文件数据存储到数据库。我的客户端要求是将相同的CSV文件动态存储到不同的数据库(例如:Oracle和postgres)。如何实现这一点?我试过用水壶工作并设置变量方法。它对我不起作用。如何将数据库连接属性动态传递给转换作为参数连接到不同的数据库。请帮我解决这个问题。
答案 0 :(得分:5)
要连接到SAME类型的不同数据库,您只需设置相关属性(主机,端口,数据库名称,架构,用户名,密码以及连接所需的任何内容)。
但是,如果您的数据库类型发生更改,则需要设置通用数据库连接,您需要提供JDBC驱动程序的类,完整的连接URL(包括参数),用户名和密码。
通过更改这些变量,您可以切换目标数据库。
请记住,无法在同一转换中设置和使用变量。由于转换步骤的并行特性,您需要在转换1中设置变量值,然后在转换B中使用它们,并将两个转换括在父作业中。最佳变量范围是"在root作业中有效"。
答案 1 :(得分:0)
实际上,对于在多个KETTLE_HOME位置使用多个shared.xml文件的不同数据库可能工作正常,我没有时间进行彻底测试但是我确实使用KETTLE_HOME和shared.xml进行一次性运行,数据库是相同的,至少根据connection.type。