In this scenario we will read dynamic columns from a source file, map them and then write them to a table in a MySQL database. By defining a dynamic column alongside known column names, we can retrieve all of the columns from the source file, including the unknown columns.
Drop a tFileInputDelimited, a tMap and a tAmazonMysqlOutput component onto the workspace.
Link tFileInputDelimited to tMap using a Row > Main connection. Link tMap to tAmazonMysqlOutput using a Row > *New Output* (Main) connection.
Double-click tFileInputDelimited to open its Basic Settings view in the Component tab.
The dynamic schema feature is only supported in Built-In mode.
Select Built-In from the Property Type list. Click the [...] button next to the File name/Stream field and browse to the input file.
Enter the characters you want to use as separators next to the Row Separator and Field Separator fields.
Click Edit Schema to define the source file schema.
The [Edit Schema] dialog box opens.
Add as many rows as required or delete rows using the and buttons and modify the order of the columns using the and buttons.
Under Column, enter the names of each known column on separate rows and enter a name for the dynamic column under Column in the last row.
Under Type, click the field to define the type of data in the corresponding column.
Click the arrow to select the correct data type.
Under Type, the dynamic column type must be set as Dynamic.
The dynamic column must be defined in the last row of the schema.
Click OK to close the dialog box when you have finished defining the source schema.
Click tMap to open its Basic Settings view in the Component tab.
Click [...] next to Map Editor to map the columns from the source file.
On the toolbar on top of the Output Panel on the top right of the window, click the [+] button.
The [Add an Output] schema dialog box appears.
Next to New output, enter a name for the output schema. Click OK to close the dialog box.
Using the Ctrl + click technique, highlight all off the column names in the input schema on the left and drop them onto the output schema.
The columns dropped on the output columns retain their original values and they are automatically mapped on a one to one basis.
In the output schema, click the relevant row under Expression if you want to use the Expression Builder to set advanced parameters for the corresponding column in the output. Click the [...] button which appears to open the Expression Builder and set the parameters as required.
For further information about using the Expression Builder, see Talend Studio User Guide.
The dynamic column must be mapped on a one to one basis and cannot undergo any transformations. It cannot be used in a filter expression or in a variables section. It cannot be renamed in the output table and cannot be used as a join condition.
Click OK to close the Map Editor.
Double-click tAmazonMysqlOutput to set its Basic Settings in the Component tab.
Select Built-in as the Property Type and the DB Version from the corresponding list. Enter the database server IP address and the listening port number of the database server next to Host and Port. Enter your authentication data in the Username and Password fields. Next to Action on table and Action on data, select the required actions.
Set the Schema type as Built-in and click Edit schema to modify the schema if required.
Save your Job and press F6 to execute it.
The table is written to the MySQL database along with the data and the column names of the previously unknown columns:
The Job can also be run in the Traces Debug mode, which allows you to view the rows as they are written to the output file, in the workspace.
For further information about defining and mapping dynamic schemas, see Talend Studio User Guide.
For an example of how to write dynamic columns to an output file, see Scenario 4: Writing dynamic columns from a MySQL database to an output file.