tMysqlRow - 6.3

Talend Components Reference Guide

EnrichVersion
6.3
EnrichProdName
Talend Big Data
Talend Big Data Platform
Talend Data Fabric
Talend Data Integration
Talend Data Management Platform
Talend Data Services Platform
Talend ESB
Talend MDM Platform
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
Talend Real-Time Big Data Platform
task
Data Governance
Data Quality and Preparation
Design and Development
EnrichPlatform
Talend Studio

Function

tMysqlRow is the specific component for this database query. It executes the SQL query stated in the specified database. The row suffix means the component implements a flow in the job design although it doesn't provide output.

Purpose

Depending on the nature of the query and the database, tMysqlRow acts on the actual DB structure or on the data (although without handling data). The SQLBuilder tool helps you write easily your SQL statements.

tMysqlRow properties

Component family

Databases/MySQL

 

Basic settings

Property type

Either Built-in or Repository.

Since version 5.6, both the Built-In mode and the Repository mode are available in any of the Talend solutions.

 

 

Built-in: No property data stored centrally.

 

 

Repository: Select the repository file in which the properties are stored. The fields that follow are completed automatically using the data retrieved.

 

DB Version

Select the MySQL version that you are using.

 

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.

 

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.

Since version 5.6, both the Built-In mode and the Repository mode are available in any of the Talend solutions.

 

 

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 the article Verifying default values in a retrieved schema on Talend Help Center (https://help.talend.com).

  

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.

 

Table Name

Name of the table to be processed.

 

Query type

Either Built-in or Repository.

Since version 5.6, both the Built-In mode and the Repository mode are available in any of the Talend solutions.

 

 

Built-in: Fill in manually the query statement or build it graphically using SQLBuilder

 

 

Repository: Select the relevant query stored in the Repository. The Query field gets accordingly filled in.

 

Guess Query

Click the Guess Query button to generate the query which corresponds to your table schema in the Query field.

 

Query

Enter your DB query paying particularly attention to properly sequence the fields in order to match the schema definition.

 

Die on error

This check box is selected by default. Clear the check box to skip the row on error and complete the process for error-free rows. If needed, you can retrieve the rows on 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.

 

Propagate QUERY's recordset

Select this check box to insert the result of the query in a COLUMN of the current flow. Select this column from the use column list.

Note

This option allows the component to have a different schema from that of the preceding component. Moreover, the column that holds the QUERY's recordset should be set to the type of Object and this component is usually followed by tParseRecordSet.

 

Use PreparedStatement

Select this check box if you want to query the database using a PreparedStatement. In the Set PreparedStatement Parameter table, define the parameters represented by "?" in the SQL instruction of the Query field in the Basic Settings tab.

Parameter Index: Enter the parameter position in the SQL instruction.

Parameter Type: Enter the parameter type.

Parameter Value: Enter the parameter value.

Note

This option is very useful if you need to execute the same query several times. Performance levels are increased

 

Commit every

Number of rows to be completed before committing batches of rows together into the DB. This option ensures transaction quality (but not rollback) and above all better performance on executions.

 

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

QUERY: the query statement being processed. This is a Flow variable and it returns a string.

ERROR_MESSAGE: the error message generated by the component when an error occurs. This is an After variable and it returns a string. This variable functions only if the Die on error check box is cleared, if the component has this check box.

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

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.

Usage

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

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: Removing and regenerating a MySQL table index

This scenario describes a four-component job that removes a table index, applies a select insert action onto a table then regenerates the index.

Linking the components

  1. Select and drop the following components onto the design workspace: tMysqlRow (x2), tRowGenerator, and tMysqlOutput.

  2. Link the first tMysqlRow to tRowGenerator using an OnComponentOk connection.

  3. Link tRowGenerator to tMysqlOutput using a Row > Main connection.

  4. Link tRowGenerator to the second tMysqlRow using an OnSubjobOk connection.

Configuring the components

  1. Select the tMysqlRow to fill in the DB Basic settings.

  2. In Property type as well in Schema, select the relevant DB entry in the list.

    The DB connection details and the table schema are accordingly filled in.

  3. Propagate the properties and schema details onto the other components of the Job.

    The query being stored in the Metadata area of the Repository, you can also select Repository in the Query type field and the relevant query entry.

  4. If you didn't store your query in the Repository, type in the following SQL statement to alter the database entries: drop index <index_name> on <table_name>

  5. Select the second tMysqlRow component, check the DB properties and schema.

  6. Type in the SQL statement to recreate an index on the table using the following statement: create index <index_name> on <table_name> (<column_name>)

    The tRowGenerator component is used to generate automatically the columns to be added to the DB output table defined.

  7. Select the tMysqlOutput component and fill in the DB connection properties either from the Repository or manually the DB connection details are specific for this use only. The table to be fed is named: comprehensive.

  8. The schema should be automatically inherited from the data flow coming from the tLogRow. Edit the schema to check its structure and check that it corresponds to the schema expected on the DB table specified.

    The Action on table is None and the Action on data is Insert.

    No additional Columns is required for this job.

Executing the Job

  1. Press Ctrl+S to save the Job.

  2. Press F6 to run the job.

    If you manage to watch the action on DB data, you can notice that the index is dropped at the start of the job and recreated at the end of the insert action.

    Related topics: tDBSQLRow properties.

Scenario 2: Using PreparedStatement objects to query data

This scenario describes a four component job which allows you to link a table column with a client file. The MySQL table contains a list of all the American States along with the State ID, while the file contains the customer information including the ID of the State in which they live. We want to retrieve the name of the State for each client, using an SQL query. In order to process a large volume of data quickly, we use a PreparedStatement object which means that the query is executed only once rather than against each row in turn. Then each row is sent as a parameter. Note that PreparedStatement object can also be used in avoiding SQL injection.

For this scenario, we use a file and a database for which we have already stored the connection and properties in the Rerpository metadata. For further information concerning the creation of metadata in delimited files, the creation of database connection metadata and the usage of metadata, see Talend Studio User Guide.

Linking the components

  1. In the Repository, expand the Metadata and File delimited nodes.

  2. Select the metadata which corresponds to the client file and slide the metadata onto the workspace. Here, we are using the customers metadata.

  3. Double-click tFileInputDelimited in the [Components] dialog box to add tFileInputDelimited to the workspace, with the relevant fields filled by the metadata file.

  4. Drop tMysqlRow, tParseRecordSet and tFileOutputDelimited onto the workspace.

  5. Link tFileInputDelimited to tMysqlRow using a Row > Main connection.

  6. Link tMysqlRow to tParseRecordSet using a Row > Main connection.

  7. Link tParseRecordSet to tFileOutputDelimited using a Row > Main connection.

Configuring the components

  1. Double-click tFileInputDelimited to open its Basic settings view.

  2. In the Schema list, select Built-in so that you can modify the component's schema. Then click on [...] next to the Edit schema field to add a column into which the name of the State will be inserted.

  3. Click on the [+] button to add a column to the schema. Rename this column LabelStateRecordSet and select Object from the Type list. Click OK to save your modifications.

    From the Palette, select the tMysqlRow, tParseRecordSet and tFileOutputDelimited components and drop them onto the workspace.

  4. Double click tMysqlRow to set its properties in the Basic settings tab of the Component view.

  5. In the Property Type list, select Repository and click on the [...] button to select a database connection from the metadata in the Repository. The DB Version, Host, Port, Database, Username and Password fields are completed automatically. If you are using the Built-in mode, complete these fields manually.

  6. From the Schema list, select Built-in to set the schema properties manually and add the LabelStateRecordSet column, or click directly on the Sync columns button to retrieve the schemma from the preceding component.

  7. In the Query field, enter the SQL query you want to use. Here, we want to retrieve the names of the American States from the LabelState column of the MySQL table, us_state: "SELECT LabelState FROM us_state WHERE idState=?".

    The question mark, "?", represents the parameter to be set in the Advanced settings tab.

  8. Click Advanced settings to set the components advanced properties.

  9. Select the Propagate QUERY's recordset check box and select the LabelStateRecordSet column from the use column list to insert the query results in that column.

    Select the Use PreparedStatement check box and define the parameter used in the query in the Set PreparedStatement Parameters table.

    Click on the [+] button to add a parameter.

    In the Parameter Index cell, enter the parameter position in the SQL instruction. Enter "1" as we are only using one parameter in this example.

    In the Parameter Type cell, enter the type of parameter. Here, the parameter is a whole number, hence, select Int from the list.

    In the Parameter Value cell, enter the parameter value. Here, we want to retrieve the name of the State based on the State ID for every client in the input file. Hence, enter "row1.idState".

  10. Double click tParseRecordSet to set its properties in the Basic settings tab of the Component view.

  11. From the Prev. Comp. Column list, select the preceding components column for analysis. In this example, select LabelStateRecordSet.

    Click on the Sync columns button to retrieve the schema from the preceding component. The Attribute table is automatically completed with the schema columns.

    In the Attribute table, in the Value field which corresponds to the LabelStateRecordSet, enter the name of the column containing the State names to be retrieved and matched with each client, within double quotation marks. In this example, enter "LabelState".

  12. Double click tFileOutputDelimited to set its properties in the Basic settings tab of the Component view.

  13. In the File Name field, enter the access path and name of the output file.

    Click Sync columns to retrieve the schema from the preceding component.

Executing the Job

  1. Press Ctrl+S to save the Job.

  2. Press F6 to run it.

    A column containing the name of the American State corrresponding to each client is added to the file.

Scenario 3: Combining two flows for selective output

In this scenario, a flow generated by tFixedFlowInput is combined with a flow from the Mysql database. The source flow contains id and age fields while the Mysql table contains id and name. We want to retrieve the age data of the source flow and combine it with the id and name records from the Mysql table based on id matching. One thing that is worth noting is that the input schema is different from the output one at tMysqlRow in the Job.

Linking the components

  1. Drop tFixedFlowInput, tMysqlRow, tParseRecordSet and tLogRow onto the workspace.

  2. Rename tFixedFlowInput as source_flow, tMysqlRow as insert_recordset, tParseRecordSet as parse_recordset and tLogRow as show_combined_flow.

  3. Link tFixedFlowInput to tMysqlRow using a Row > Main connection.

  4. Link tMysqlRow to tParseRecordSet using a Row > Main connection.

  5. Link tParseRecordSet to tLogRow using a Row > Main connection.

Configuring the components

  1. Double-click tFixedFlowInput to open its Basic settings view.

  2. Select Use Inline Content (delimited file) in the Mode area.

    In the Content field, enter the data to be transferred:

    1;30
    2;20
  3. Double-click the [...] button next to Edit schema to open the schema editor.

    Click the [+] button to add two columns, namely id and age, with the type of Integer.

    Click Ok to close the editor.

  4. Double-click tMysqlRow to open its Basic settings view.

  5. In the Host and Port fields, enter the connection details.

    In the Database field, enter the database name.

    In the Username and Password fields, enter the authentication details.

    In the Query field, enter the SQL query to retrieve the id and name data from the Mysql table employee: "select id, name from employee WHERE id=?".

    The question mark, "?", represents the parameter to be set in the Advanced settings tab.

  6. Click the [...] button next to Edit schema to open the schema editor.

  7. Click the [+] button to add two columns in the right part, namely recordset and age, with the type of Object and Integer. Note that recordset is intended to hold the query results of the Mysql table, namely the id and name fields.

    Click OK to close the editor.

  8. Click the Advanced settings tab for further setup.

  9. Select the Propagate QUERY's recordset check box and choose recordset from the use column list to insert the query results in that column.

    Select the Use PreparedStatement check box and define the parameter used in the query in the Set PreparedStatement Parameters table.

  10. Click on the [+] button to add a line.

    In the Parameter Index cell, enter the parameter position in the SQL instruction. Enter "1" as we are only using one parameter in this example.

    In the Parameter Type cell, enter the type of parameter. Here, the parameter is an integer. Hence, select Int from the list.

    In the Parameter Value cell, enter the parameter value. Here, we want to retrieve the id and name from the employee table based on the id value from the source flow. Hence, enter row3.id.

  11. Double-click tParseRecordSet to open its Basic settings view.

    From the Prev. Comp. Column list, select the column to parse, namely recordset.

  12. Click the [...] button next to Edit schema to open the schema editor.

    Click the [+] button to add three columns in the right part, namely id, name and age, with the type of Integer, String and Integer. Note that the id and name fields are intended to hold the parsed data of recordset.

    Click OK to close the editor.

    In the Attribute table, in the Value fields which correspond to id and name, enter the name of the column in the Mysql table to be retrieved, namely "id" and "name".

  13. Double-click tLogRow to open its Basic settings view.

    In the Mode area, select Table (print values in cells of a table for better display.

Executing the Job

  1. Press Ctrl+S to save the Job.

  2. Press F6 to run the Job.