在mule流中创建动态表

时间:2013-10-01 12:13:25

标签: mule mule-studio

在我的要求中,我从文件(excel)接收数据并将其插入数据库。 但是我根据一些业务逻辑处理文件时得到的表名。 我应该检查表是否存在名称,如果存在则更新它,否则创建并将数据插入其中。 如果没有使用mule studio提供的组件或端点的自定义Java代码,是否可以实现此要求? 提前谢谢。

2 个答案:

答案 0 :(得分:1)

我认为标准组件不可能。

假设您有3个可以通过三个xls映射的表,您可以静态定义三个数据映射器,并在选择组件上调用它们。 检查一个表是否存在groovy / java是非常简单的,例如你可以使用:

java.sql.DatabaseMetaData dbm = con.getMetaData();
            rs = dbm.getTables(null, null, "TableName", null);
            if (rs.next()) {
                System.out.println("TableName found");
            }else{
                System.out.println("TableName NOT found");
} 

答案 1 :(得分:0)

或者,您也可以在Groovy脚本中使用以下查询来检查数据库是否存在,如果不存在则创建它: -

if not exists (select * from sysobjects where name='YourTableName' and xtype='U')create table YourTableName(ID int NOT NULL, NAME varchar(50) NULL,AGE int NULL,DESIGNATION varchar(50) NULL)

但是,搁浅的Mule数据库组件不支持此if not exists查询,在这种情况下,您可以使用Groovy组件。
这是一个简单的查询,您可以根据需要对其进行修改,如果不退出则创建表非常有用,如您所见,您可以直接在单行中使用create table命令