August 17, 2023

tMysqlInput – Docs for ESB 5.x

tMysqlInput

tMysqlInput_icon32_white.png

tMysqlInput properties

Component family

Databases/MySQL

 

Function

tMysqlInput reads a database and
extracts fields based on a query.

Purpose

tMysqlInput executes a DB query
with a strictly defined order which must correspond to the schema
definition. Then it passes on the field list to the next component
via a Main row link.

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.

 

Save_Icon.png

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.

 

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.

This component offers the advantage of the dynamic schema feature. This allows you to
retrieve unknown columns from source files or to copy batches of columns from a source
without mapping each column individually. For further information about dynamic schemas,
see Talend Studio
User Guide.

This dynamic schema feature is designed for the purpose of retrieving unknown columns
of a table and is recommended to be used for this purpose only; it is not recommended
for the use of creating tables.

 

 

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.

   

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

 

Query type and
Query

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

Warning

If using the dynamic schema feature, the
SELECT query must include the * wildcard, to retrieve all of the columns
from the table selected.

  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
.

Note

When you need to handle data of the time-stamp type
0000-00-00 00:00:00 using this
component, set the parameter as:

noDatetimeStringSync=true&zeroDa­teTimeBehavior=convertToNull.

 

Enable stream

Select this check box to enables streaming over buffering which
allows the code to read from a large table without consuming a large
amount of memory in order to optimize the performance.

 

Trim all the String/Char columns

Select this check box to remove leading and trailing whitespace
from all the String/Char columns.

 

Trim column

Remove leading and trailing whitespace from defined
columns.

Note

Clear Trim all the String/Char
columns
to enable Trim columns in this
field.

 

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 

NB_LINE: the number of rows processed. This is an After
variable and it returns an integer.

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 covers all possible SQL queries for Mysql
databases.

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: Writing columns from a MySQL database to an output file

In this scenario we will read certain columns from a MySQL database, and then write
them to a table in a local output file.

Dragging and dropping components and linking them together

  1. Drop tMysqlInput and tFileOutputDelimited from the Palette onto the workspace.

  2. Link tMysqlInput to tFileOutputDelimited using a Row > Main connection.

    Use_Case_tMysqlInput_1.png

Configuring the components

  1. Double-click tMysqlInput to open its
    Basic Settings view in the Component tab.

    Use_Case_tMysqlInput_2.png
  2. From the Property Type list, select
    Repository if you have already stored
    the connection to database in the Metadata
    node of the Repository tree view. The
    property fields that follow are automatically filled in.

    For more information about how to store a database connection, see
    Talend Studio
    User Guide.

    If you have not defined the database connection locally in the Repository, fill in the details manually after
    selecting Built-in from the Property Type list.

  3. Set the Schema as Built-in and click Edit
    schema
    to define the desired schema.

    The schema editor opens:

    Use_Case_tMysqlInput_3.png
  4. Click the [+] button to add the rows
    that you will use to define the schema, four columns in this example
    id, first_name,
    city and salary.

    Under Column, click in the fields to
    enter the corresponding column names.

    Click the field under Type to define the
    type of data.

    Click OK to close the schema
    editor.

  5. Next to the Table Name field, click
    the […] button to select the database
    table of interest.

    A dialog box displays a tree diagram of all the tables in the selected
    database:

    Use_Case_tMysqlInput_4.png
  6. Click the table of interest and then click OK to close the dialog box.

  7. Set the Query Type as Built-In.

  8. In the Query box, enter the query
    required to retrieve the desired columns from the table.

    Use_Case_tMysqlInput_5.png
  9. Double-click tFileOutputDelimited to set
    its Basic settings in the Component tab.

    Use_Case_tMysqlInput_6.png
  10. Next to the File Name field, click the
    […] button to browse your directory
    to where you want to save the output file, then enter a name for the
    file.

    Select the Include Header check box to
    retrieve the column names as well as the data.

  11. Save the Job.

Executing the Job

The results below can be found after F6 is
pressed to run the Job.

Use_Case_tMysqlInput_7.png

As shown above, the output file is written with the desired column names and
corresponding data, retrieved from the database:

Note

The Job can also be run in the Traces Debug
mode, which allows you to view the rows as they are being written to the output
file, in the workspace.

Scenario 2: Using context parameters when reading a table from a MySQL database

In this scenario, we will read a table from a MySQL database, using a context
parameter to refer to the table name.

Dragging and dropping components and linking them together

  1. Drop tMysqlInput and tLogRow from the Palette onto the workspace.

  2. Link tMysqlInput to tLogRow using a Row >
    Main
    connection.

    use_case_tmysqlinput_context_1.png

Configuring the components

  1. Double-click tMysqlInput to open its
    Basic Settings view in the Component tab.

    use_case_tmysqlinput_context_2.png
  2. From the Property Type list, select
    Repository if you have already stored
    the connection to database in the Metadata
    node of the Repository tree view. The
    property fields that follow are automatically filled in.

    For more information about how to store a database connection, see
    Talend Studio
    User Guide.

    If you have not defined the database connection in the Repository, fill in the details manually after
    selecting Built-in from the Property Type list.

  3. Set the Schema as Built-In and click Edit
    schema
    to define the desired schema.

    The schema editor opens:

    use_case_tmysqlinput_context_3.png
  4. Click the [+] button to add the rows
    that you will use to define the schema, seven columns in this example:
    id, first_name, last_name, city, state, date_of_birth and salary.

    Under Column, click the fields to enter
    the corresponding column names.

    Click the fields under Type to define
    the type of data.

    Click OK to close the schema
    editor.

  5. Put the cursor in the Table Name field
    and press F5 for context parameter setting.

    use_case_tmysqlinput_context_4.png

    For more information about context settings, see Talend Studio
    User Guide.

  6. Keep the default setting in the Name
    field and type in the name of the database table in the Default value field, employees in this case.

  7. Click Finish to validate the setting.

    The context parameter context.TABLE
    automatically appears in the Table Name
    field.

  8. In the Query type list, select Built-In. Then, click Guess
    Query
    to get the query statement.

    In this use case, we want to read the records with the salary above 8000.
    Therefore, we add a Where clause and the final query statement
    is as follows:

  9. Double-click tLogRow to set its Basic Settings in the Component tab.

    use_case_tmysqlinput_context_5.png
  10. In the Mode area, select Table (print values in cells of a table) for a
    better display of the results.

  11. Save the Job.

Executing the Job

The results below can be found after F6 is
pressed to run the Job.

use_case_tmysqlinput_context_6.png

As shown above, the records with the salary greater than 8000 are
retrieved.

Scenario 3: Reading data from MySQL databases through context-based dynamic
connections

In this scenario we will read data from database tables with the same data structure
but in two different MySQL databases named project_q1
and project_q2 respectively. We will specify the
connections to these databases dynamically at runtime, without making any modification
to the Job.

Dropping and linking the components

  1. Drop two tMysqlConnection, a tMysqlInput, a tLogRow, and a tMysqlClose
    components onto the design workspace.

  2. Link the first tMysqlConnection to the
    second tMysqlConnection and the second
    tMysqlConnection to tMysqlInput using Trigger > On Subjob Ok
    connections.

  3. Link tMysqlInput to tLogRow using a Row >
    Main connection.

  4. Link tMysqlInput to tMysqlClose using a Trigger
    > On Subjob Ok connection.

    use_case-tmysqlinput-dynamic_connection-1.png

Creating a context variable

To be able to choose a database connection dynamically at runtime, we need to
define a context variable, which will then be configure it in the Dynamic settings of the database input component.

  1. In the Contexts view, click the [+] button to add a row in the table, click in
    the Name field and enter a name for the
    variable, myConnection in this
    example.

    use_case-tmysqlinput-dynamic_connection-context1.png
  2. From the Type list field, select
    List Of Value.

  3. Click in the Value field and then click
    the button that appears in the field to open the [Configure value of list] dialog box.

    use_case-tmysqlinput-dynamic_connection-context2.png
  4. In the [Configure value of list] dialog
    box, click the New… button to open the
    [New Value] dialog box, and enter the
    name of one of the connection components in the text field, tMysqlConnection_1 in this example. Then click
    OK to close the dialog box.

    use_case-tmysqlinput-dynamic_connection-context3.png

    Repeat this step to specify the other connection component name as another
    list item, tMysqlConnection_2 in this
    example.

    When done, click OK to close the
    [Configure Values] dialog box.

  5. Select the check box next to the variable value field, and fill the
    Prompt field with the message you want
    to display at runtime, Select a connection
    component:
    in this example.

Configuring the components

  1. Double-click the first tMysqlConnection
    component to show its Basic settings view,
    and set the connection details. For more information on the configuration of
    tMysqlConnection, see tMysqlConnection.

    Note that we use this component to open a connection to a MySQL databased
    named project_q1.

    use_case-tmysqlinput-dynamic_connection-2.png
  2. Configure the second tMysqlConnection
    component in the same way, but fill the Database field with project_q2 because we want to use this component to open a
    connection to another MySQL database, project_q2.

    use_case-tmysqlinput-dynamic_connection-3.png
  3. Double-click the tMysqlInput component to
    show its Basic settings view.

    use_case-tmysqlinput-dynamic_connection-4.png
  4. Select the Use an existing connection
    check box, and leave the Component List box
    as it is.

  5. Click the […] button next to Edit schema to open the [Schema] dialog box and define the data structure of the
    database table to read data from.

    use_case-tmysqlinput-dynamic_connection-5.png

    In this example, the database table structure is made of four columns,
    id (type Integer, 2 characters long),
    firstName (type String, 15 characters
    long), lastName (type String, 15
    characters long), and city (type String,
    15 characters long). When done, click OK to
    close the dialog box and propagate the schema settings to the next
    component.

  6. Fill the Table field with the database
    table name, customers in this example,
    and click Guess Query to generate the query
    statement corresponding to your table schema in the Query field.

  7. In the Dynamic settings view, click the
    [+] button to add a row in the table,
    and fill the Code field with the code
    script of the context variable you just created, " +
    context.myConnection + "
    in this example.

    use_case-tmysqlinput-dynamic_connection-6.png
  8. In the Basic settings view of the
    tLogRow component, select the Table option for better display effect of the Job
    execution result.

    use_case-tmysqlinput-dynamic_connection-7.png
  9. In the Dynamic settings view of the
    tMysqlClose component, do exactly the
    same as in the Dynamic settings view of the
    tMysqlInput component.

Saving and executing the Job

  1. Press Ctrl+S to save your Job and press
    F6 or click Run to launch it.

    A dialog box appears prompting you to specify the connection component you
    want to use.

  2. Select the connection component, tMysqlConnection_1, and click OK.

    use_case-tmysqlinput-dynamic_connection-8.png

    The data read from database project_q1
    is displayed in the Run console.

    use_case-tmysqlinput-dynamic_connection-9.png
  3. Press F6 or click Run
    to launch your Job again. When prompted, select the other connection
    component, tMysqlConnection_2, to read data
    from the other database, project_q2.

    The data read from database project_q2
    is displayed in the Run console.

    use_case-tmysqlinput-dynamic_connection-10.png

Scenario 4: Writing dynamic columns from a MySQL database to an output file

Warning

This scenario makes use of the Dynamic Schema feature, which
is only available to users who have subscribed to one of the Talend solutions.

In this scenario we will read dynamic columns from a MySQL database, map them and then
write them to a table in a local output file. By defining a dynamic column alongside
known column names, we can retrieve all of the columns from the database table,
including the unknown columns.

Dragging and dropping components and linking them together

  1. Drop a tMysqlInput, a tMap and a tFileOutputDelimited component onto the workspace.

  2. Link tMysqlInput to tMap using a Row >
    Main
    connection.

  3. Link tMap to tFileOutputDelimited using a Row >
    *New Output* (Main)
    connection.

    Use_Case_tMysqlInput_Dynamic_Schema_1.png

Configuring the components

Data source and dynamic columns

  1. Double-click tMysqlInput to open its
    Basic Settings view in the Component tab.

    Use_Case_tMysqlInput_Dynamic_Schema_2.png

    Warning

    The dynamic schema feature is only supported in
    Built-In mode.

  2. Select Built-in as the Property Type.

    Select the DB Version from the
    corresponding list.

    Next to Host, enter the database server
    IP address.

    Next to Port, enter the listening port
    number of the database server.

    Enter your authentication data in the Username and Password
    fields.

  3. Set the Schema type as Built-in and click Edit
    schema
    to define the dynamic schema.

    The schema editor opens:

    Use_Case_tMysqlInput_Dynamic_Schema_3.png
  4. Click the [+] button to add a row to the
    schema.

    Under Column and
    Db Column
    , click in the fields to enter the corresponding
    column names.

    Click the field under Type to define the
    type of data.

    Click the arrow and select Dynamic from
    the list.

    Warning

    Under Type,
    the dynamic column type must be set as Dynamic.

  5. Click OK to close the schema
    editor.

  6. Next to the Table Name field, click
    the […] button to select the database
    table of interest.

    A dialog box displays a tree diagram of all the tables in the selected
    database:

    Use_Case_tMysqlInput_Dynamic_Schema_4.png

    Click the table of interest and then click OK to close the dialog box.

  7. Set the Query Type as Built-In.

    In the Query box, enter the query
    required to retrieve all of the columns from the table.

    Warning

    In the SELECT statement it is necessary to use
    the * wildcard character, to
    retrieve all of the columns from the selected table.

    Use_Case_tMysqlInput_Dynamic_Schema_5.png
  8. Click tMap to open its Basic Settings view in the Component tab.

  9. Click […] next to Map Editor to map the column from the source
    file.

    Use_Case_tMysqlInput_Dynamic_Schema_6.png
  10. Drop the column defined as dynamic from the input schema on the left onto
    the output schema on the right.

    The column dropped on the output schema retains its original
    values.

    Warning

    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.

    Use_Case_tMysqlInput_Dynamic_Schema_7.png
  11. Click OK to close the Map Editor.

Output file

  1. Double-click tFileOutputDelimited to set
    its Basic Settings in the Component tab.

    Use_Case_tMysqlInput_Dynamic_Schema_8.png
  2. Next to the File Name field, click the
    […] button to browse your directory
    to where you want to save the output file, then enter a name for the
    file.

  3. Select the Include Header check box to
    retrieve the column names as well as the data.

  4. Save the Job.

Executing the Job

The results below can be found after F6 is
pressed to run the Job.

Use_Case_tMysqlInput_Dynamic_Schema_9.png

As shown above, the output file is written with all the column names and
corresponding data, retrieved from the database via the dynamic schema:

Note

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.


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