August 17, 2023

tMysqlRow – Docs for ESB 5.x

tMysqlRow

tMysqlRow_icon32_white.png

tMysqlRow properties

Component family

Databases/MySQL

 

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.

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 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 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.

 

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.

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 more information on Dynamic settings and context
variables, see Talend Studio User Guide.

Global Variables

QUERY: the SQL 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

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.

    Use_Case_tMySQLRow.png

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.

    Use_Case_tMySQLRow2_1.png

Configuring the components

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

    Use_Case_tMySQLRow2_2.png
  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.

    Use_Case_tMySQLRow2_3.png
  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.

    Use_Case_tMySQLRow2_4.png
  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.

    Use_Case_tMySQLRow2_5.png
  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.

    Use_Case_tMySQLRow2_6.png
  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.

    Use_Case_tMySQLRow2_7.png
  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.

    Use_Case_tMySQLRow2_8.png

    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.

    use_case_tmysqlrow3_1.png

Configuring the components

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

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

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

  3. Double-click the […] button next to
    Edit schema to open the schema editor.

    use_case_tmysqlrow3_3.png

    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.

    use_case_tmysqlrow3_4.png
  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.

    use_case_tmysqlrow3_5.png
  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.

    use_case_tmysqlrow3_6.png
  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.

    use_case_tmysqlrow3_7.png

    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.

    use_case_tmysqlrow3_8.png

    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.

    use_case_tmysqlrow3_9.png

    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.

    use_case_tmysqlrow3_10.png

Document get from Talend https://help.talend.com
Thank you for watching.
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x