////
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at
  http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
////
:documentationPath: /pipeline/transforms/
:language: en_US
:description: The Execute Row SQL Script transform executes an SQL script for every input row the transform receives. The SQL to execute can be passed as pipeline fields or read from a file.

= image:transforms/icons/execsqlrow.svg[Execute row SQL script transform Icon, role="image-doc-icon"] Execute row SQL script

[%noheader,cols="3a,1a", role="table-no-borders" ]
|===
|
== Description

The Execute Row SQL Script transform executes an SQL script for every input row the transform receives.

The SQL to execute can be passed as pipeline fields or read from a file.

|
== Supported Engines
[%noheader,cols="2,1a",frame=none, role="table-supported-engines"]
!===
!Hop Engine! image:check_mark.svg[Supported, 24]
!Spark! image:question_mark.svg[Maybe Supported, 24]
!Flink! image:question_mark.svg[Maybe Supported, 24]
!Dataflow! image:question_mark.svg[Maybe Supported, 24]
!===
|===

== Options

[options="header"]
|===
|Option|Description
|Transform name|Name of the transform; This name has to be unique in a single pipeline
|Connection|Select a database connection to use
|Commit|Number of rows to send before doing a database commit
|SQL field name|The field that either contains the SQL to execute or optionally specifies the path to a file that contains SQL to execute|Read SQL from file
|If checked, then the SQL field name option specifies a file that contains SQL to execute, otherwise the SQL field name option specifies the actual SQL to execute.
(Available since 5.0)
|Field to contain insert stats|Optional: If you want to get an additional field in our stream with the number or records that where inserted, please define the field name here.
|Field to contain update stats|Same as insert stats, but for updated rows.
|Field to contain delete stats|Same as insert stats, but for deleted rows.
|Field to contain read stats|Same as insert stats, but for read rows.
|===

== Notes

Because of the scripting/dynamic nature of the transform, it does not use prepared statements and thus is not intended to work fast or optimal.
For good performance turn to dedicated transforms like Table Output (insert into), Table Input (Select), Update, Delete, etc.