tMysqlOutput - 6.2

Talend Open Studio Components Reference Guide

EnrichVersion
6.2
EnrichProdName
Talend Open Studio for Big Data
Talend Open Studio for Data Integration
Talend Open Studio for Data Quality
Talend Open Studio for ESB
Talend Open Studio for MDM
task
Data Governance
Data Quality and Preparation
Design and Development
EnrichPlatform
Talend Studio

Function

tMysqlOutput writes, updates, makes changes or suppresses entries in a database.

Purpose

tMysqlOutput executes the action defined on the table and/or on the data contained in the table, based on the flow incoming from the preceding component in the Job.

tMysqlOutput properties

Component family

Databases/MySQL

 

Basic settings

Property type

Either Built-In or Repository.

Built-In: No property data stored centrally.

Repository: Select the repository file where the properties are stored.

 

DB Version

Select the MySQL version you are using.

 

Click this icon to open a database connection wizard and store the database connection parameters you set in the component Basic settings view.

For more information about setting up and storing database connection parameters, see Talend Studio User Guide.

 

Use an existing connection

Select this check box and in the Component List click the relevant connection component to reuse the connection details you already defined.

Note

When a Job contains the parent Job and the child Job, if you need to share an existing connection between the two levels, for example, to share the connection created by the parent Job with the child Job, you have to:

  1. In the parent level, register the database connection to be shared in the Basic settings view of the connection component which creates that very database connection.

  2. In the child level, use a dedicated connection component to read that registered database connection.

For an example about how to share a database connection across Job levels, see Talend Studio User Guide.

 

Host

Database server IP address.

 

Port

Listening port number of DB server.

 

Database

Name of the database.

 

Username and Password

DB user authentication data.

To enter the password, click the [...] button next to the password field, and then in the pop-up dialog box enter the password between double quotes and click OK to save the settings.

 

Table

Name of the table to be written. Note that only one table can be written at a time

 

Action on table

On the table defined, you can perform one of the following operations:

Default: No operation is carried out.

Drop and create a table: The table is removed and created again.

Create a table: The table does not exist and gets created.

Create a table if not exists: The table is created if it does not exist.

Drop a table if exists and create: The table is removed if it already exists and created again.

Clear a table: The table content is deleted.

Truncate table: The table content is quickly deleted. However, you will not be able to rollback the operation.

 

Action on data

On the data of the table defined, you can perform:

Insert: Add new entries to the table. If duplicates are found, the job stops.

Update: Make changes to existing entries.

Insert or update: Insert a new record. If the record with the given reference already exists, an update would be made.

Update or insert: Update the record with the given reference. If the record does not exist, a new record would be inserted.

Delete: Remove entries corresponding to the input flow.

Replace: Add new entries to the table. If an old row in the table has the same value as a new row for a PRIMARY KEY or a UNIQUE index, the old row is deleted before the new row is inserted.

Insert or update on duplicate key or unique index: Add entries if the inserted value does not exist or update entries if the inserted value already exists and there is a risk of violating a unique index or primary key.

Insert Ignore: Add only new rows to prevent duplicate key errors.

Warning

You must specify at least one column as a primary key on which the Update and Delete operations are based. You can do that by clicking Edit Schema and selecting the check box(es) next to the column(s) you want to set as primary key(s). For an advanced use, click the Advanced settings view where you can simultaneously define primary keys for the update and delete operations. To do that: Select the Use field options check box and then in the Key in update column, select the check boxes next to the column name on which you want to base the update operation. Do the same in the Key in delete column for the deletion operation.

 

Schema and Edit schema

A schema is a row description. It defines the number of fields (columns) to be processed and passed on to the next component. The schema is either Built-In or stored remotely in the Repository.

 

 

Built-In: You create and store the schema locally for this component only. Related topic: see Talend Studio User Guide.

 

 

Repository: You have already created the schema and stored it in the Repository. You can reuse it in various projects and Job designs. Related topic: see Talend Studio User Guide.

When the schema to be reused has default values that are integers or functions, ensure that these default values are not enclosed within quotation marks. If they are, you must remove the quotation marks manually.

For more details, see https://help.talend.com/display/KB/Verifying+default+values+in+a+retrieved+schema.

  

Click Edit schema to make changes to the schema. If the current schema is of the Repository type, three options are available:

  • View schema: choose this option to view the schema only.

  • Change to built-in property: choose this option to change the schema to Built-in for local changes.

  • Update repository connection: choose this option to change the schema stored in the repository and decide whether to propagate the changes to all the Jobs upon completion. If you just want to propagate the changes to the current Job, you can select No upon completion and choose this schema metadata again in the [Repository Content] window.

 

Die on error

This check box is selected by default. Clear the check box to skip the row in error and complete the process for error-free rows. If needed, you can retrieve the rows in error via a Row > Rejects link.

  Specify a data source alias

Select this check box and specify the alias of a data source created on the Talend Runtime side to use the shared connection pool defined in the data source configuration. This option works only when you deploy and run your Job in Talend Runtime. For a related use case, see Scenario 4: Retrieving data from a MySQL database using the data source on Talend Runtime side to set up the database connection.

Warning

If you use the component's own DB configuration, your data source connection will be closed at the end of the component. To prevent this from happening, use a shared DB connection with the data source alias specified.

This check box is not available when the Use an existing connection check box is selected.

Advanced settings

Additional JDBC parameters

Specify additional connection properties for the DB connection you are creating. This option is not available if you have selected the Use an existing connection check box in the Basic settings.

Note

You can press Ctrl+Space to access a list of predefined global variables.

 

Extend Insert

Select this check box to carry out a bulk insert of a defined set of lines instead of inserting lines one by one. The gain in system performance is considerable.

Number of rows per insert: enter the number of rows to be inserted per operation. Note that the higher the value specified, the lower performance levels shall be due to the increase in memory demands.

Note

This option is not compatible with the Reject link. You should therefore clear the check box if you are using a Row > Rejects link with this component.

Warning

If you are using this component with tMysqlLastInsertID, ensure that the Extend Insert check box in Advanced Settings is not selected. Extend Insert allows for batch loading, however, if the check box is selected, only the ID of the last line of the last batch will be returned.

 

Use Batch

Select this check box to activate the batch mode for data processing.

Note

This check box is available only when you have selected, the Update or the Delete option in the Action on data field.

 

Batch Size

Specify the number of records to be processed in each batch. The default value for this field is 10000.

This field appears only when the Use Batch check box is selected.

 

Commit every

Number of rows to be included in the batch before it is committed to the DB. This option ensures transaction quality (but not rollback) and, above all, a higher performance level.

 

Additional Columns

This option is not available if you have just created the DB table (even if you delete it beforehand). This option allows you to call SQL functions to perform actions on columns, provided that these are not insert, update or delete actions, or actions that require pre-processing.

 

 

Name: Type in the name of the schema column to be altered or inserted.

 

 

SQL expression: Type in the SQL statement to be executed in order to alter or insert the data in the corresponding column.

 

 

Position: Select Before, Replace or After, depending on the action to be performed on the reference column.

 

 

Reference column: Type in a reference column that tMySqlOutput can use to locate or replace the new column, or the column to be modified.

 

Use field options

Select this check box to customize a request, particularly if multiple actions are being carried out on the data.

 

Use Hint Options

Select this check box to activate the hint configuration area which helps you optimize a query's execution. In this area, parameters are:

- HINT: specify the hint you need, using the syntax /*+ */.

- POSITION: specify where you put the hint in a SQL statement.

- SQL STMT: select the SQL statement you need to use.

 

Enable debug mode

Select this check box to display each step involved in the process of writing data in the database.

 

Use duplicate key update mode insert

Updates the values of the columns specified, in the event of duplicate primary keys.:

Column: Between double quotation marks, enter the name of the column to be updated.

Value: Enter the action you want to carry out on the column.

Note

To use this option you must first of all select the Insert mode in the Action on data list found in the Basic Settings view.

 

tStatCatcher Statistics

Select this check box to collect log data at the component level.

Dynamic settings

Click the [+] button to add a row in the table and fill the Code field with a context variable to choose your database connection dynamically from multiple connections planned in your Job. This feature is useful when you need to access database tables having the same data structure but in different databases, especially when you are working in an environment where you cannot change your Job settings, for example, when your Job has to be deployed and executed independent of Talend Studio.

The Dynamic settings table is available only when the Use an existing connection check box is selected in the Basic settings view. Once a dynamic parameter is defined, the Component List box in the Basic settings view becomes unusable.

For examples on using dynamic parameters, see Scenario 3: Reading data from MySQL databases through context-based dynamic connections and Scenario: Reading data from different MySQL databases using dynamically loaded connection parameters. For more information on Dynamic settings and context variables, see Talend Studio User Guide.

Global Variables

NB_LINE: the number of rows read by an input component or transferred to an output component. This is an After variable and it returns an integer.

NB_LINE_UPDATED: the number of rows updated. This is an After variable and it returns an integer.

NB_LINE_INSERTED: the number of rows inserted. This is an After variable and it returns an integer.

NB_LINE_DELETED: the number of rows deleted. This is an After variable and it returns an integer.

NB_LINE_REJECTED: the number of rows rejected. This is an After variable and it returns an integer.

QUERY: the query statement processed. This is an After variable and it returns a string.

To fill up a field or expression with a variable, press Ctrl + Space to access the variable list and choose the variable to use from it.

For further information about variables, see Talend Studio User Guide.

A Flow variable functions during the execution of a component while an After variable functions after the execution of the component.

Usage

This component offers the flexibility benefit of the DB query and covers all of the SQL queries possible.

This component must be used as an output component. It allows you to carry out actions on a table or on the data of a table in a MySQL database. It also allows you to create a reject flow using a Row > Rejects link to filter data in error. For an example of tMySqlOutput in use, see Scenario 3: Retrieve data in error with a Reject link.

Log4j

If you are using a subscription-based version of the Studio, the activity of this component can be logged using the log4j feature. For more information on this feature, see Talend Studio User Guide.

For more information on the log4j logging levels, see the Apache documentation at http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Level.html.

Scenario 1: Adding a new column and altering data in a DB table

This Java scenario is a three-component job that aims at creating random data using a tRowGenerator, duplicating a column to be altered using the tMap component, and eventually altering the data to be inserted based on an SQL expression using the tMysqlOutput component.

  • Drop the following components from the Palette onto the design workspace: tRowGenerator, tMap and tMySQLOutput.

  • Connect tRowGenerator, tMap, and tMysqlOutput using the Row Main link.

  • In the design workspace, select tRowGenerator to display its Basic settings view.

  • Click the Edit schema three-dot button to define the data to pass on to the tMap component, two columns in this scenario, name and random_date.

  • Click OK to close the dialog box.

  • Click the RowGenerator Editor three-dot button to open the editor and define the data to be generated.

  • Click in the corresponding Functions fields and select a function for each of the two columns, getFirstName for the first column and getrandomDate for the second column.

  • In the Number of Rows for Rowgenerator field, enter 10 to generate ten first name rows and click Ok to close the editor.

  • Double-click the tMap component to open the Map editor. The Map editor opens displaying the input metadata of the tRowGenerator component.

  • In the Schema editor panel of the Map editor, click the plus button of the output table to add two rows and define the first as random_date and the second as random_date1.

In this scenario, we want to duplicate the random_date column and adapt the schema in order to alter the data in the output component.

  • In the Map editor, drag the random_date row from the input table to the random_date and random_date1 rows in the output table.

  • Click OK to close the editor.

  • In the design workspace, double-click the tMysqlOutput component to display its Basic settings view and set its parameters.

  • Set Property Type to Repository and then click the three-dot button to open the [Repository content] dialog box and select the correct DB connection. The connection details display automatically in the corresponding fields.

    Note

    If you have not stored the DB connection details in the Metadata entry in the Repository, select Built-in on the property type list and set the connection detail manually.

  • Click the three-dot button next to the Table field and select the table to be altered, Dates in this scenario.

  • On the Action on table list, select Drop table if exists and create, select Insert on the Action on data list.

  • If needed, click Sync columns to synchronize with the columns coming from the tMap component.

  • Click the Advanced settings tab to display the corresponding view and set the advanced parameters.

  • In the Additional Columns area, set the alteration to be performed on columns.

    In this scenario, the One_month_later column replaces random_date_1. Also, the data itself gets altered using an SQL expression that adds one month to the randomly picked-up date of the random_date_1 column. ex: 2007-08-12 becomes 2007-09-12.

    -Enter One_Month_Later in the Name cell.

    -In the SQL expression cell, enter the relevant addition script to be performed, "adddate(Random_date, interval 1 month)" in this scenario.

    -Select Replace on the Position list.

    -Enter Random_date1 on the Reference column list.

Note

For this job we duplicated the random_date_1 column in the DB table before replacing one instance of it with the One_Month_Later column. The aim of this workaround was to be able to view upfront the modification performed.

  • Save your job and press F6 to execute it.

The new One_month_later column replaces the random_date1 column in the DB table and adds one month to each of the randomly generated dates.

Related topic: see tDBOutput properties.

Scenario 2: Updating data in a database table

This Java scenario describes a two-component Job that updates data in a MySQL table according to that in a delimited file.

  • Drop tFileInputDelimited and tMysqlOutput from the Palette onto the design workspace.

  • Connect the two components together using a Row Main link.

  • Double-click tFileInputDelimited to display its Basic settings view and define the component properties.

  • From the Property Type list, select Repository if you have already stored the metadata of the delimited file in the Metadata node in the Repository tree view. Otherwise, select Built-In to define manually the metadata of the delimited file.

    For more information about storing metadata, see Talend Studio User Guide.

  • In the File Name field, click the three-dot button and browse to the source delimited file that contains the modifications to propagate in the MySQL table.

    In this example, we use the customer_update file that holds four columns: id, CustomerName, CustomerAddress and idState. Some of the data in these four columns is different from that in the MySQL table.

  • Define the row and field separators used in the source file in the corresponding fields.

  • If needed, set Header, Footer and Limit.

    In this example, Header is set to 1 since the first row holds the names of columns, therefore it should be ignored. Also, the number of processed lines is limited to 2000.

  • Click the three-dot button next to Edit Schema to open a dialog box where you can describe the data structure of the source delimited file that you want to pass to the component that follows.

  • Select the Key check box(es) next to the column name(s) you want to define as key column(s).

Note

It is necessary to define at least one column as a key column for the Job to be executed correctly. Otherwise, the Job is automatically interrupted and an error message displays on the console.

  • In the design workspace, double-click tMysqlOutput to open its Basic settings view where you can define its properties.

  • Click Sync columns to retrieve the schema of the preceding component. If needed, click the three-dot button next to Edit schema to open a dialog box where you can check the retrieved schema.

  • From the Property Type list, select Repository if you have already stored the connection metadata in the Metadata node in the Repository tree view. Otherwise, select Built-In to define manually the connection information.

    For more information about storing metadata, see Talend Studio User Guide.

  • Fill in the database connection information in the corresponding fields.

  • In the Table field, enter the name of the table to update.

  • From the Action on table list, select the operation you want to perform, Default in this example since the table already exists.

  • From the Action on data list, select the operation you want to perform on the data, Update in this example.

  • Save your Job and press F6 to execute it.

Using you DB browser, you can verify if the MySQL table, customers, has been modified according to the delimited file.

In the above example, the database table has always the four columns id, CustomerName, CustomerAddress and idState, but certain fields have been modified according to the data in the delimited file used.

Scenario 3: Retrieve data in error with a Reject link

This scenario describes a four-component Job that carries out migration from a customer file to a MySQL database table and redirects data in error towards a CSV file using a Reject link.

  • In the Repository, select the customer file metadata that you want to migrate and drop it onto the workspace. In the [Components] dialog box, select tFileInputDelimited and click OK. The component properties will be filled in automatically.

  • If you have not stored the information about your customer file under the Metadata node in the Repository. Drop a tFileInputDelimited component from the family File > Input, in the Palette, and fill in its properties manually in the Component tab.

  • From the Palette, drop a tMap from the Processing family onto the workspace.

  • In the Repository, expand the Metadata node, followed by the Db Connections node and select the connection required to migrate your data to the appropriate database. Drop it onto the workspace. In the [Components] dialog box, select tMysqlOutput and click OK. The database connection properties will be automatically filled in.

  • If you have not stored the database connection details under the Db Connections node in the Repository, drop a tMysqlOutput from the Databases family in the Palette and fill in its properties manually in the Component tab.

For more information, see Talend Studio User Guide.

  • From the Palette, select a tFileOutputDelimited from the File > Output family, and drop it onto the workspace.

  • Link the customers component to the tMap component, and the tMap and Localhost with a Row Main link. Name this second link out.

  • Link the Localhost to the tFileOutputDelimited using a Row > Reject link.

  • Double-click the customers component to display the Component view.

  • In the Property Type list, select Repository and click the [...] button in order to select the metadata containing the connection to your file. You can also select the Built-in mode and fill in the fields manually.

  • Click the [...] button next to the File Name field, and fill in the path and the name of the file you want to use.

  • In the Row and Field Separator fields, type in between inverted commas the row and field separator used in the file.

  • In the Header, Footer and Limit fields, type in the number of headers and footers to ignore, and the number of rows to which processing should be limited.

  • In the Schema list, select Repository and click the [...] button in order to select the schema of your file, if it is stored under the Metadata node in the Repository. You can also click the [...] button next to the Edit schema field, and set the schema manually.

The schema is as follows:

  • Double-click the tMap component to open its editor.

  • Select the id, CustomerName, CustomerAddress, idSate, id2, RegTime and RegisterTime columns on the table on the left and drop them on the out table, on the right.

  • In the Schema editor area, at the bottom of the tMap editor, in the right table, change the length of the CustomerName column to 28 to create an error. Thus, any data for which the length is greater than 28 will create errors, retrieved with the Reject link.

  • Click OK.

  • In the workspace, double-click the output Localhost component to display its Component view.

  • In the Property Type list, select Repository and click the [...] button to select the connection to the database metadata. The connection details will be automatically filled in. You can also select the Built-in mode and set the fields manually.

  • In the Table field, type in the name of the table to be created. In this scenario, we call it customers_data.

  • In the Action on data list, select the Create table option.

  • Click the Sync columns button to retrieve the schema from the previous component.

  • Make sure the Die on error check box isn't selected, so that the Job can be executed despite the error you just created.

  • Click the Advanced settings tab of the Component view to set the advanced parameters of the component.

  • Deselect the Extend Insert check box which enables you to insert rows in batch, because this option is not compatible with the Reject link.

  • Double-click the tFileOutputDelimited component to set its properties in the Component view.

  • Click the [...] button next to the File Name field to fill in the path and name of the output file.

  • Click the Sync columns button to retrieve the schema of the previous component.

  • Save your Job and press F6 to execute it.

The data in error are sent to the delimited file, as well as the error type met. Here, we have: Data truncation.