2011-10-27 12 views
6

¿Existe alguna manera de crear nombres de columnas dinámicas (como una clave/valor) utilizando los valores devueltos desde la consulta throw DIH (DataImportHandler)?Nombres de columna dinámicos usando DIH (DataImportHandler)

Por ejemplo:

<entity name="foo" dataSource="my_database" query="select key,value from foo where id=${item.id}"> 
    <field column="${foo.key}" value="${foo.value}" name="${foo.key}_s"/> 
</entity> 

??

Respuesta

8

Uso ScriptTransformer -

Ejemplo -

datos de configuración - Añadir campo personalizado -

<script><![CDATA[ 
     function addfield(row){ 
      var fieldName = row.get('key') + "_s" 
      row.put(fieldName, row.get('value')); 
      return row; 
     } 
]]></script> 

entidad Mapeo -

<entity name="foo" dataSource="my_database" transformer="script:addfield" query="select key,value from foo where id=${item.id}"> 
    ...... 
</entity> 
+0

1 cosa a tener en cuenta. Si tiene campos en su esquema denominados 'clave' o' valor', alíelos en la consulta de la entidad 'foo' y, en consecuencia, cambie la función del transformador para usar los nombres con alias. (Desafortunadamente tenía un campo multivalor con el mismo nombre que 'key' y los valores de esta consulta se agregaron a mi campo multivaluado). – arun

Cuestiones relacionadas