xmlspring-bootfileteiid

Teiid Springboot starter file datasource


Using Teiid Springboot I would like to consume xml files from disk. I used to work with the old EAP/Wildfly Teiid project and the way to solve this was to use a resource adapter and then call a procedure to read the data.

With Springboot what steps do I need to take to create a datasource/resource adapter that can be used in my DDL VDB. I already had a look at the FTP example below, so my assumption would be to create a FileConnectionFactory: https://github.com/teiid/teiid-spring-boot/tree/master/samples/ftp However, there is no use of a DDL file and my preference is to parse the XML in the DDL (unless there is a better way to expose the this data in my DDL).


Solution

  • When using DDL based VDB, you can define the file-based connection by supplying the following properties in the application.properties

    spring.teiid.file.foo.parent-directory=path/to/myfile
    

    where foo is your file resource name, which needs to be used in VDB, for example: (accounts is the name given for schema)

    CREATE SERVER foo FOREIGN DATA WRAPPER file;
    CREATE SCHEMA accounts SERVER foo;
    

    then in a view transformation, you can use the above schema and read the file as

    create view something(...) AS
      select x.* from 
        (exec accounts.getTextFiles()) f, 
        xmltable('/a' PASSING xmlparse(document f.file) COLUMNS first string, second integer) x
    

    For more details about using xmltable see http://teiid.github.io/teiid-documents/master/content/reference/r_xmltable.html