tMysqlRow
Executes the stated SQL query on the specified MySQL database.
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 is the specific component for MySQL database
query. It implements a flow in the Job design although it doesn’t provide output.
tMysqlRow Standard properties
These properties are used to configure tMysqlRow running in the Standard Job framework.
The Standard
tMysqlRow component belongs to the Databases family.
The component in this framework is available in all Talend
products.
connector. The properties related to database settings vary depending on your database
type selection. For more information about dynamic database connectors, see Dynamic database components.
Basic settings
Database |
Select a type of database from the list and click |
Property type |
Either Built-in or |
 |
Built-in: No property data stored |
 |
Repository: Select the repository |
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 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:
For an example about how to share a database connection |
Host |
Database server IP address |
Port |
Listening port number of DB server. |
Database |
Name of the database |
Username and |
DB user authentication data. To enter the password, click the […] button next to the |
Schema and Edit |
A schema is a row description. It defines the number of fields |
 |
Built-In: You create and store the schema locally for this component |
 |
Repository: You have already created the schema and stored it in the When the schema to be reused has default values that are You can find more details about how to |
 |
Click Edit
|
Table Name |
Name of the table to be processed. |
Query type |
Either Built-in or |
 |
Built-in: Fill in manually the |
 |
Repository: Select the relevant |
Guess |
Click the Guess Query button to |
Query |
Enter your DB query paying particularly attention to properly |
Die on error |
This check box is selected by default. Clear the check box to skip |
Specify a data source alias |
Select this check box and specify the alias of a data source created on the If you use the component’s own DB configuration, your data source This check box is not available when the Use an existing |
Advanced settings
Additional JDBC parameters |
Specify additional connection properties for the DB connection you |
Propagate QUERY’s recordset |
Select this check box to insert the result of the query in a Note:
This option allows the component to have a different schema |
Use PreparedStatement |
Select this check box if you want to query the database using a
Parameter Index: Enter the
Parameter Type: Enter the parameter
Parameter Value: Enter the Note:
This option is very useful if you need to execute the same |
Commit every |
Number of rows to be completed before committing batches of rows |
tStatCatcher Statistics |
Select this check box to collect log data at the component |
Global Variables
Global Variables |
QUERY: the query statement being processed. This is a Flow
ERROR_MESSAGE: the error message generated by the A Flow variable functions during the execution of a component while an After variable To fill up a field or expression with a variable, press Ctrl + For further information about variables, see |
Usage
Usage rule |
This component offers the flexibility of the DB query and covers |
Dynamic settings |
Click the [+] button to add a row in the table The Dynamic settings table is For examples on using dynamic parameters, see Reading data from databases through context-based dynamic connections and Reading data from different MySQL databases using dynamically loaded connection parameters. For more information on Dynamic |
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
-
Select and drop the following components onto the design workspace:
tMysqlRow (x2), tRowGenerator, and tMysqlOutput. - Link the first tMysqlRow to tRowGenerator using an OnComponentOk connection.
-
Link tRowGenerator to tMysqlOutput using a Row > Main
connection. -
Link tRowGenerator to the second
tMysqlRow using an OnSubjobOk connection.
Configuring the components
-
Select the tMysqlRow to fill in the DB
Basic settings. -
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. -
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. -
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>
-
Select the second tMysqlRow component,
check the DB properties and schema. -
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. -
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. -
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
- Press Ctrl+S to save the Job.
-
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 Standard properties.
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
-
In the Repository, expand the Metadata and File
delimited nodes. -
Select the metadata which corresponds to the client file and slide the
metadata onto the workspace. Here, we are using the
customers metadata. -
Double-click tFileInputDelimited in the
Components dialog box to add
tFileInputDelimited to the workspace,
with the relevant fields filled by the metadata file. - Drop tMysqlRow, tParseRecordSet and tFileOutputDelimited onto the workspace.
-
Link tFileInputDelimited to tMysqlRow using a Row > Main
connection. -
Link tMysqlRow to tParseRecordSet using a Row
> Main connection. -
Link tParseRecordSet to tFileOutputDelimited using a Row > Main
connection.
Configuring the components
-
Double-click tFileInputDelimited to open its Basic
settings view. -
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. -
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. -
Double click tMysqlRow
to set its properties in the Basic
settings tab of the Component
view. -
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. -
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. -
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
. The question mark,
LabelState FROM us_state WHERE idState=?"
“?
“, represents the parameter to be set in the
Advanced settings tab. -
Click Advanced settings
to set the components advanced properties. -
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".
-
In the Parameter Index cell, enter the parameter
-
Double click tParseRecordSet to set its properties in the Basic settings tab of the Component view.
-
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“.
-
From the Prev. Comp. Column list, select the
-
Double click tFileOutputDelimited to set its properties in the Basic settings tab of the Component view.
-
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.
-
In the File Name field, enter the access path
Executing the Job
- Press Ctrl+S to save the Job.
-
Press F6 to run
it.
A column containing the name of the American State corresponding to each client is
added to the file.

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
-
Drop tFixedFlowInput, tMysqlRow, tParseRecordSet and tLogRow
onto the workspace. -
Rename tFixedFlowInput as source_flow, tMysqlRow as insert_recordset, tParseRecordSet as parse_recordset and tLogRow
as show_combined_flow. -
Link tFixedFlowInput to tMysqlRow using a Row > Main
connection. -
Link tMysqlRow to tParseRecordSet using a Row
> Main connection. -
Link tParseRecordSet to tLogRow using a Row > Main
connection.
Configuring the components
-
Double-click tFixedFlowInput to open its
Basic settings view. -
Select Use Inline Content (delimited
file) in the Mode
area.In the Content field, enter the data to
be transferred:121;302;20 -
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. -
Double-click tMysqlRow to open its
Basic settings view. -
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. -
Click the […] button next to Edit schema to open the schema editor.
-
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. -
Click the Advanced settings tab for
further setup. -
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. -
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. -
Double-click tParseRecordSet to open its
Basic settings view.From the Prev. Comp. Column list, select
the column to parse, namely recordset. -
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”. -
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
- Press Ctrl+S to save the Job.
-
Press F6 to run the Job.