You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hop.apache.org by mc...@apache.org on 2022/05/28 11:34:03 UTC

[hop] branch master updated: HOP-3933 Round decimal value to fit in scale in Numeric field in Monetdb Bulk Loader

This is an automated email from the ASF dual-hosted git repository.

mcasters pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hop.git


The following commit(s) were added to refs/heads/master by this push:
     new 30a2f12e92 HOP-3933 Round decimal value to fit in scale in Numeric field in Monetdb Bulk Loader
     new 702e498be8 Merge pull request #1505 from sramazzina/HOP-3933
30a2f12e92 is described below

commit 30a2f12e92b037cca50e425ec24c3f7f0d4c0e7b
Author: Sergio Ramazzina <se...@serasoft.it>
AuthorDate: Fri May 27 11:52:50 2022 +0200

    HOP-3933 Round decimal value to fit in scale in Numeric field in Monetdb Bulk Loader
---
 .../pipeline/transforms/monetdbbulkloader.adoc     |  24 ++++-
 .../monetdbbulkloader/MonetDbBulkLoader.java       | 110 +++++++++++++--------
 .../messages/messages_en_US.properties             |   8 +-
 .../messages/messages_it_IT.properties             |  42 ++++----
 4 files changed, 117 insertions(+), 67 deletions(-)

diff --git a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/monetdbbulkloader.adoc b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/monetdbbulkloader.adoc
index 4b3efbb55b..9c14801fd7 100644
--- a/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/monetdbbulkloader.adoc
+++ b/docs/hop-user-manual/modules/ROOT/pages/pipeline/transforms/monetdbbulkloader.adoc
@@ -62,6 +62,8 @@ This tab contains the destination settings, buffer size and location for the log
 
 This tab contains information about the temporary files that are generated to load the data.
 
+
+
 |===
 |Field|Description
 
@@ -82,4 +84,24 @@ This tab contains information about the temporary files that are generated to lo
 
 === Output Fields tab
 
-This tab contains the source to target mapping.
\ No newline at end of file
+This tab contains the source to target mapping.
+
+|===
+|Field|Description
+
+|Target table field
+|Field containing the name of the field in the target table
+
+|Incoming stream field
+|Field containing the value we want to insert in target table
+
+|Format is ok
+|Set to Y if the incoming stream's field is the correct format according to the target datatatype.
+
+*NOTE:*
+
+This setting is evaluated only when Lazy Conversion is applied.
+
+For example: imagine you are getting values from a text file, your incoming data contains numbers or dates and Lazy Conversion is enabled in the input transform. In this case, the data is not transformed internally to the target data type and is managed as a String by Hop. By setting this flag to Y, we are saying Hop that the incoming data's value is already in a format clearly understandable by the target database according to the target datatype.
+
+|===
\ No newline at end of file
diff --git a/plugins/transforms/monetdbbulkloader/src/main/java/org/apache/hop/pipeline/transforms/monetdbbulkloader/MonetDbBulkLoader.java b/plugins/transforms/monetdbbulkloader/src/main/java/org/apache/hop/pipeline/transforms/monetdbbulkloader/MonetDbBulkLoader.java
index 56a4e012c9..710f1c8239 100644
--- a/plugins/transforms/monetdbbulkloader/src/main/java/org/apache/hop/pipeline/transforms/monetdbbulkloader/MonetDbBulkLoader.java
+++ b/plugins/transforms/monetdbbulkloader/src/main/java/org/apache/hop/pipeline/transforms/monetdbbulkloader/MonetDbBulkLoader.java
@@ -24,7 +24,9 @@ import org.apache.hop.core.exception.HopException;
 import org.apache.hop.core.logging.ILogChannel;
 import org.apache.hop.core.row.IRowMeta;
 import org.apache.hop.core.row.IValueMeta;
+import org.apache.hop.core.row.ValueDataUtil;
 import org.apache.hop.core.row.value.ValueMetaDate;
+import org.apache.hop.core.row.value.ValueMetaInteger;
 import org.apache.hop.core.row.value.ValueMetaNumber;
 import org.apache.hop.core.util.StreamLogger;
 import org.apache.hop.core.util.Utils;
@@ -38,23 +40,25 @@ import org.monetdb.mcl.io.BufferedMCLReader;
 import org.monetdb.mcl.io.BufferedMCLWriter;
 import org.monetdb.mcl.net.MapiSocket;
 
+import java.math.BigDecimal;
+import java.math.RoundingMode;
 import java.util.Date;
 import java.util.List;
 
 public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, MonetDbBulkLoaderData> {
   private static final Class<?> PKG =
-      MonetDbBulkLoaderMeta.class; // for i18n purposes, needed by Translator2!!
+          MonetDbBulkLoaderMeta.class; // for i18n purposes, needed by Translator2!!
 
   private IRowMeta physicalTableRowMeta;
   private static final String ERROR_LOADING_DATA = "Error loading data: ";
 
   public MonetDbBulkLoader(
-      TransformMeta transformMeta,
-      MonetDbBulkLoaderMeta meta,
-      MonetDbBulkLoaderData data,
-      int copyNr,
-      PipelineMeta pipelineMeta,
-      Pipeline pipeline) {
+          TransformMeta transformMeta,
+          MonetDbBulkLoaderMeta meta,
+          MonetDbBulkLoaderData data,
+          int copyNr,
+          PipelineMeta pipelineMeta,
+          Pipeline pipeline) {
     super(transformMeta, meta, data, copyNr, pipelineMeta, pipeline);
   }
 
@@ -185,7 +189,7 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
   }
 
   protected void writeRowToMonetDB(IRowMeta rowMeta, Object[] r, DatabaseMeta dm)
-      throws HopException {
+          throws HopException {
     if (data.bufferIndex == data.bufferSize || log.isDebug()) {
       writeBufferToMonetDB(dm);
     }
@@ -248,10 +252,10 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
                 }
               }
               break;
-              //
-              // formatter pattern to
-              // the user.
-              //
+            //
+            // formatter pattern to
+            // the user.
+            //
             case IValueMeta.TYPE_TIMESTAMP:
             case IValueMeta.TYPE_DATE:
               // Keep the data format as indicated.
@@ -277,10 +281,10 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
                   // TIMESTAMP - DATE and TIME put together (e.g., 2012-12-21 15:51:36)
 
                   if (colMeta != null
-                      && colMeta.getOriginalColumnTypeName().equalsIgnoreCase("date")) {
+                          && colMeta.getOriginalColumnTypeName().equalsIgnoreCase("date")) {
                     line.append(data.monetDateMeta.getString(value));
                   } else if (colMeta != null
-                      && colMeta.getOriginalColumnTypeName().equalsIgnoreCase("time")) {
+                          && colMeta.getOriginalColumnTypeName().equalsIgnoreCase("time")) {
                     line.append(data.monetTimeMeta.getString(value));
                   } else {
                     // colMeta.getOriginalColumnTypeName().equalsIgnoreCase("timestamp")
@@ -306,7 +310,19 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
                 if (dbl == null) {
                   line.append(data.nullrepresentation);
                 } else {
-                  line.append(dbl);
+                  IValueMeta colMeta = null;
+                  if (physicalTableRowMeta != null) {
+                    colMeta = physicalTableRowMeta.getValueMeta(index);
+                  }
+                  IValueMeta valueMetaInt = new ValueMetaInteger(valueMeta.getName());
+                  Long precision = Long.valueOf(colMeta.getPrecision());
+                  line.append(
+                          ValueDataUtil.round(
+                                  valueMeta,
+                                  dbl,
+                                  valueMetaInt,
+                                  precision,
+                                  java.math.BigDecimal.ROUND_HALF_UP));
                 }
               }
               break;
@@ -315,11 +331,23 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
               if (valueMeta.isStorageBinaryString() && meta.getFieldFormatOk()[i]) {
                 line.append(valueMeta.getString(valueData));
               } else {
-                String string = valueMeta.getString(valueData);
-                if (string == null) {
+                BigDecimal bd = valueMeta.getBigNumber(valueData);
+                if (bd == null) {
                   line.append(data.nullrepresentation);
                 } else {
-                  line.append(string);
+                  IValueMeta colMeta = null;
+                  if (physicalTableRowMeta != null) {
+                    colMeta = physicalTableRowMeta.getValueMeta(index);
+                  }
+                  IValueMeta valueMetaInt = new ValueMetaInteger(valueMeta.getName());
+                  Long precision = Long.valueOf(colMeta.getPrecision());
+                  line.append(
+                          ValueDataUtil.round(
+                                  valueMeta,
+                                  bd,
+                                  valueMetaInt,
+                                  precision,
+                                  java.math.BigDecimal.ROUND_HALF_UP));
                 }
               }
               break;
@@ -348,8 +376,8 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
     String cmd;
     String table = data.schemaTable;
     String truncateStatement =
-        meta.getDatabaseMeta()
-            .getTruncateTableStatement(variables, meta.getSchemaName(), meta.getTableName());
+            meta.getDatabaseMeta()
+                    .getTruncateTableStatement(variables, meta.getSchemaName(), meta.getTableName());
     if (truncateStatement == null) {
       throw new HopException("Truncate table is not supported!");
     }
@@ -385,7 +413,7 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
       logDetailed("getTransformname: " + getTransformName());
     }
     SqlStatement statement =
-        meta.getTableDdl(variables, getPipelineMeta(), getTransformName(), true, data, true);
+            meta.getTableDdl(variables, getPipelineMeta(), getTransformName(), true, data, true);
     if (log.isDetailed()) {
       logDetailed("Statement: " + statement);
     }
@@ -424,15 +452,15 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
       }
 
       cmdBuff
-          .append("COPY ")
-          .append(data.bufferIndex)
-          .append(" RECORDS INTO ")
-          .append(data.schemaTable)
-          .append(" FROM STDIN USING DELIMITERS '")
-          .append(data.separator)
-          .append("','" + Const.CR + "','")
-          .append(data.quote)
-          .append("' NULL AS '" + nullRep + "';");
+              .append("COPY ")
+              .append(data.bufferIndex)
+              .append(" RECORDS INTO ")
+              .append(data.schemaTable)
+              .append(" FROM STDIN USING DELIMITERS '")
+              .append(data.separator)
+              .append("','" + Const.CR + "','")
+              .append(data.quote)
+              .append("' NULL AS '" + nullRep + "';");
       String cmd = cmdBuff.toString();
 
       // See if we need to execute extra SQL statements...
@@ -511,7 +539,7 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
     // Confirming Database Connection is defined.
     if (meta.getDatabaseMeta() == null) {
       throw new HopException(
-          BaseMessages.getString(PKG, "MonetDbBulkLoaderMeta.GetSQL.NoConnectionDefined"));
+              BaseMessages.getString(PKG, "MonetDbBulkLoaderMeta.GetSQL.NoConnectionDefined"));
     }
   }
 
@@ -571,16 +599,16 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
       // Support parameterized database connection names
       String connectionName = meta.getDbConnectionName();
       if (!Utils.isEmpty(connectionName)
-          && connectionName.startsWith("${")
-          && connectionName.endsWith("}")) {
+              && connectionName.startsWith("${")
+              && connectionName.endsWith("}")) {
         meta.setDatabaseMeta(getPipelineMeta().findDatabase(resolve(connectionName)));
       }
 
       // Schema-table combination...
       data.schemaTable =
-          meta.getDatabaseMeta(this)
-              .getQuotedSchemaTableCombination(
-                  variables, meta.getSchemaName(), meta.getTableName());
+              meta.getDatabaseMeta(this)
+                      .getQuotedSchemaTableCombination(
+                              variables, meta.getSchemaName(), meta.getTableName());
 
       return true;
     }
@@ -607,13 +635,13 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
   }
 
   protected static MapiSocket getMonetDBConnection(
-      String host, int port, String user, String password, String db) throws Exception {
+          String host, int port, String user, String password, String db) throws Exception {
     return getMonetDBConnection(host, port, user, password, db, null);
   }
 
   protected static MapiSocket getMonetDBConnection(
-      String host, int port, String user, String password, String db, ILogChannel log)
-      throws Exception {
+          String host, int port, String user, String password, String db, ILogChannel log)
+          throws Exception {
     MapiSocket mserver = new MapiSocket();
     mserver.setDatabase(db);
     mserver.setLanguage("sql");
@@ -664,8 +692,8 @@ public class MonetDbBulkLoader extends BaseTransform<MonetDbBulkLoaderMeta, Mone
    * @param database to connect to
    */
   protected static void executeSql(
-      String query, String host, int port, String user, String password, String db)
-      throws Exception {
+          String query, String host, int port, String user, String password, String db)
+          throws Exception {
     MapiSocket mserver = null;
     try {
       mserver = getMonetDBConnection(host, port, user, password, db);
diff --git a/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_en_US.properties b/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_en_US.properties
index d61c1ff380..076fbe0cae 100644
--- a/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_en_US.properties
+++ b/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_en_US.properties
@@ -40,11 +40,11 @@ MonetDBBulkLoaderMeta.CheckResult.TableNameOK=Table name is filled in.
 MonetDBBulkLoaderDialog.Tab.MonetDBmclientSettings.Label=MonetDB Settings
 MonetDBBulkLoaderDialog.NoSQLNeeds.DialogTitle=OK
 MonetDBBulkLoaderDialog.Fields.Label=Fields to load\:
-MonetDBBulkLoaderDialog.ColumnInfo.FormatOK=Field format OK
+MonetDBBulkLoaderDialog.ColumnInfo.FormatOK=Format is ok
 MonetDBBulkLoaderDialog.SQL.Button=\ &SQL
-MonetDBBulkLoaderDialog.ColumnInfo.StreamField=Incoming Stream field
+MonetDBBulkLoaderDialog.ColumnInfo.StreamField=Incoming stream field
 MonetDBBulkLoaderMeta.CheckResult.CouldNotReadTableInfo=Couldn''t read the table info, please check the table-name & permissions.
-MonetDBBulkLoaderDialog.ColumnInfo.TableField=Target Table field
+MonetDBBulkLoaderDialog.ColumnInfo.TableField=Target table field
 MonetDBBulkLoaderMeta.Exception.UnableToReadTransformInfoFromXML=Unable to read transform information from XML
 MonetDBBulkLoaderDialog.Encoding.Label=Encoding
 MonetDBBulkLoaderDialog.Log.LookingAtConnection=Looking at connection\:
@@ -102,7 +102,7 @@ MonetDBBulkLoaderDialog.Injection.TABLENAME=General: Target Table
 MonetDBBulkLoaderDialog.Injection.LOGFILE=General: Log File Location
 MonetDBBulkLoaderDialog.Injection.TARGETFIELDS=Output: Target Table Fields
 MonetDBBulkLoaderDialog.Injection.SOURCEFIELDS=Output: Stream Fields
-MonetDBBulkLoaderDialog.Injection.FIELDFORMATOK=Output: Field Format OK
+MonetDBBulkLoaderDialog.Injection.FIELDFORMATOK=Output: Format is ok
 MonetDBBulkLoaderDialog.Injection.SEPARATOR=Settings: Field Separator
 MonetDBBulkLoaderDialog.Injection.FIELDENCLOSURE=Settings: Field Enclosure
 MonetDBBulkLoaderDialog.Injection.NULLVALUE=Settings: Represent null values as
diff --git a/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_it_IT.properties b/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_it_IT.properties
index a1c74f583a..4f12123a29 100644
--- a/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_it_IT.properties
+++ b/plugins/transforms/monetdbbulkloader/src/main/resources/org/apache/hop/pipeline/transforms/monetdbbulkloader/messages/messages_it_IT.properties
@@ -21,15 +21,15 @@ MonetDBBulkLoaderDialog.SQLError.DialogTitle=ERRORE
 MonetDBBulkLoaderDialog.DoMapping.UnableToFindTargetFields.Title=Errore nel prelievo dei campi di destinazione
 MonetDBBulkLoaderDialog.DoMapping.UnableToFindSourceFields.Title=Errore nel prelievo dei campi sorgente
 MonetDBBulkLoaderMeta.CheckResult.DatabaseErrorOccurred=E'' avvenuto un errore di database\:
-MonetDBBulkLoaderMeta.CheckResult.TransformReceivingDatas=Il passo \u00E8 connesso al precedente, ricezione di {0} campi
-MonetDBBulkLoaderDialog.InvalidConnection.DialogMessage=Prego selezionare una connessione valida\!
-MonetDBBulkLoaderMeta.CheckResult.TransformReceivingInfoFromOtherTransforms=Il passo sta ricevendo le informazioni dagli altri passi.
+MonetDBBulkLoaderMeta.CheckResult.TransformReceivingDatas=Il transform \u00E8 connesso al precedente, ricezione di {0} campi
+MonetDBBulkLoaderDialog.InvalidConnection.DialogMessage=Si prega selezionare una connessione valida\!
+MonetDBBulkLoaderMeta.CheckResult.TransformReceivingInfoFromOtherTransforms=Il transform sta ricevendo le informazioni dagli altri transforms.
 MonetDBBulkLoaderDialog.FullyQuoteSQL.Label=Quotare interamente tutte le istruzioni SQL utilizzate in un''esecuzione (es. "schema_name"."TableName")?
 MonetDBBulkLoaderMeta.GetSQL.ErrorOccurred=Errore\:
 MonetDBBulkLoaderDialog.LogFile.Label=File di log
 MonetDBBulkLoaderDialog.InvalidConnection.DialogTitle=ERRORE
 MonetDBBulkLoaderMeta.CheckResult.MissingFieldsToLoadInTargetTable=Campi da caricare mancanti nella tabella di destinazione\:
-MonetDBBulkLoaderMeta.CheckResult.MissingFieldsInInput=Campi mancanti, non trovati nell''input dai precedenti passi\:
+MonetDBBulkLoaderMeta.CheckResult.MissingFieldsInInput=Campi mancanti, non trovati nell''input dai precedenti transforms\:
 MonetDBBulkLoaderDialog.Truncate.Label=Tronca
 MonetDBBulkLoaderDialog.Shell.Title=MonetDB bulk loader
 MonetDBBulkLoaderDialog.Filetype.All=Tutti
@@ -38,29 +38,29 @@ MonetDBBulkLoaderMeta.CheckResult.TableNameOK=Il nome della tabella \u00E8 stato
 MonetDBBulkLoaderDialog.Tab.MonetDBmclientSettings.Label=Impostazioni MonetDB
 MonetDBBulkLoaderDialog.NoSQLNeeds.DialogTitle=OK
 MonetDBBulkLoaderDialog.Fields.Label=Campi da caricare\:
-MonetDBBulkLoaderDialog.ColumnInfo.FormatOK=Formato campo OK
+MonetDBBulkLoaderDialog.ColumnInfo.FormatOK=Formato campo ok
 MonetDBBulkLoaderDialog.SQL.Button=&SQL
 MonetDBBulkLoaderDialog.ColumnInfo.StreamField=Campo stream
-MonetDBBulkLoaderMeta.CheckResult.CouldNotReadTableInfo=Impossibile leggere le informazioni della tabella, prego controllare il nome della tabella ed i permessi.
+MonetDBBulkLoaderMeta.CheckResult.CouldNotReadTableInfo=Impossibile leggere le informazioni della tabella, si prega di controllare nome della tabella e permessi.
 MonetDBBulkLoaderDialog.ColumnInfo.TableField=Campo tabella
-MonetDBBulkLoaderMeta.Exception.UnableToReadTransformInfoFromXML=Impossibile leggere le informazioni del passo da XML
+MonetDBBulkLoaderMeta.Exception.UnableToReadTransformInfoFromXML=Impossibile leggere le informazioni del transform da XML
 MonetDBBulkLoaderDialog.Encoding.Label=Codifica
 MonetDBBulkLoaderDialog.Log.LookingAtConnection=Ricerca connessione\:
 MonetDBBulkLoaderMeta.Exception.ErrorGettingFields=Impossibile determinare i campi richiesti.
-MonetDBBulkLoaderMeta.CheckResult.NoInputError=Nessun input ricevuto dagli altri passi\!
-MonetDBBulkLoaderMeta.GetSQL.NotReceivingAnyFields=Nessuna ricezione di campi dai precedenti passi. Controllare i precedenti passi per errori ed hop di connessione.
+MonetDBBulkLoaderMeta.CheckResult.NoInputError=Nessun input ricevuto dagli altri transforms\!
+MonetDBBulkLoaderMeta.GetSQL.NotReceivingAnyFields=Nessuna ricezione di campi dai precedenti transforms. Controllare i precedenti transforms per errori ed hop di connessione.
 MonetDBBulkLoaderDialog.Tab.GeneralSettings.Label=Impostazioni generali
-MonetDBBulkLoaderDialog.DoMapping.UnableToFindSourceFields.Message=Non \u00E8 stato possibile recuperare i campi sorgente per questo passo a causa di un errore\:
+MonetDBBulkLoaderDialog.DoMapping.UnableToFindSourceFields.Message=Non \u00E8 stato possibile recuperare i campi sorgente per questo transform a causa di un errore\:
 MonetDBBulkLoaderDialog.DoMapping.SomeFieldsNotFoundTitle=Alcuni campi referenziati non sono stati trovati\!
 MonetDBBulkLoaderMeta.Exception.TableNotFound=Impossibile determinare i campi richiesti poich\u00E9 la tabella del database specificata non \u00E8 stata trovata.
-MonetDBBulkLoaderDialog.NoSQLNeeds.DialogMessage=Nessun SQL \u00E8 necessario per eseguire questo passo correttamente.
-MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined=Nessuna connessione \u00E8 stata definita in questo passo.
+MonetDBBulkLoaderDialog.NoSQLNeeds.DialogMessage=Nessun SQL \u00E8 necessario per eseguire questo transform correttamente.
+MonetDBBulkLoaderMeta.GetSQL.NoConnectionDefined=Nessuna connessione \u00E8 stata definita in questo transform.
 MonetDBBulkLoaderDialog.CouldNotBuildSQL.DialogMessage=Impossibile costruire lo statement SQL a causa di un errore
-MonetDBBulkLoaderMeta.CheckResult.InvalidConnection=Prego selezionare o creare una connessione\!
-MonetDBBulkLoaderDialog.Tab.ClearedDbCacheTitle=Puliziona Cache Database 
+MonetDBBulkLoaderMeta.CheckResult.InvalidConnection=Seleziona o crea una connessione\!
+MonetDBBulkLoaderDialog.Tab.ClearedDbCacheTitle=Pulizia cache database 
 MonetDBBulkLoaderDialog.DoMapping.SomeSourceFieldsNotFound=Questi campi sorgente non sono stati trovati\: {0}
 MonetDBBulkLoaderDialog.Encoding.Tooltip=Quale set di caratteri utilizzare per i dati (vuoto significa codifica di default del workflow)
-MonetDBBulkLoaderDialog.DoMapping.UnableToFindTargetFields.Message=Non \u00E8 stato possibile recuperare i campi destinazione per questo passo a causa di un errore\:
+MonetDBBulkLoaderDialog.DoMapping.UnableToFindTargetFields.Message=Non \u00E8 stato possibile recuperare i campi destinazione per questo transform a causa di un errore\:
 MonetDBBulkLoaderDialog.TargetTable.Label=Tabella di destinazione
 MonetDBBulkLoaderDialog.FailedToGetFields.DialogTitle=Prelievo dei campi fallito
 MonetDBBulkLoaderDialog.Tab.MonetDBmclientSettings.ParameterGroup=Le API di MonetDB e mclient utilizzano le seguenti impostazioni per interpretare i dati in ingresso.
@@ -71,19 +71,19 @@ MonetDBBulkLoaderMeta.Exception.TableNotSpecified=Impossibile determinare i camp
 MonetDBBulkLoaderMeta.CheckResult.TableExists=La tabella esiste ed \u00E8 possibile leggerne i dati.
 MonetDBBulkLoaderDialog.DoMapping.SomeTargetFieldsNotFound=Questi campi destinazione non sono stati trovati\: {0}
 MonetDBBulkLoaderDialog.GetFields.Label=Preleva &campi
-MonetDBBulkLoaderDialog.Transformname.Label=Nome del passo
-MonetDBBulkLoaderMeta.CheckResult.MissingFieldsInInput3=Impossibile leggere i campi dal precedente passo.
+MonetDBBulkLoaderDialog.Transformname.Label=Nome del transform
+MonetDBBulkLoaderMeta.CheckResult.MissingFieldsInInput3=Impossibile leggere i campi dal precedente transform.
 MonetDBBulkLoaderDialog.CouldNotBuildSQL.DialogTitle=Impossibile costruire SQL
 MonetDBBulkLoaderDialog.Log.GettingKeyInfo=ricezione delle informazioni chiave...
 MonetDBBulkLoaderDialog.BufferSize.Label=Dimensione buffer (righe)
-MonetDBBulkLoaderDialog.FailedToGetFields.DialogMessage=Impossibile prelevare i campi dai precedenti passi a causa di un errore
+MonetDBBulkLoaderDialog.FailedToGetFields.DialogMessage=Impossibile prelevare i campi dai precedenti transforms a causa di un errore
 MonetDBBulkLoaderDialog.Tab.ClearDbCache=Pulisci la cache DB di Hop
 MonetDBBulkLoaderDialog.Tab.MonetDBmclientSettings.ParameterGroup.FieldEnclosure.Label=Campo enclosure
-MonetDBBulkLoaderMeta.DefaultTableName=tabella di caricamento di destinazione
+MonetDBBulkLoaderMeta.DefaultTableName=Tabella di caricamento di destinazione
 MonetDBBulkLoaderDialog.Tab.MonetDBmclientSettings.ParameterGroup.FieldSeparator.Label=Campo separatore o delimitatore
-MonetDBBulkLoader.Log.ErrorInTransform=Errore nel passo, richiesto a tutti l''interruzione a causa di\:
+MonetDBBulkLoader.Log.ErrorInTransform=Errore nel transform, richiesto a tutti l''interruzione a causa di\:
 MonetDBBulkLoaderDialog.Tab.OutputFields=Campi di output
-MonetDBBulkLoaderDialog.Tab.ClearedDbCacheMsg=La cache di Hop delle tabelle, dei campi e dei metadati \u00E8 stata ripulita con successo.\n\nIl prelievo dei campi richieder\u00E0 che il database sottostante esegua una query di ispezione.\nQuesto risulta benefico per questo passo, poich\u00E9 consente al passo di scegliere valori di default per\nil formato delle maschere che MonetDB possa comprendere.\n\nPoi, si dovr\u00E0 cliccare il pulsante "Preleva campi" per far corrispondere i campi [...]
+MonetDBBulkLoaderDialog.Tab.ClearedDbCacheMsg=La cache \u00E8 stata ripulita con successo.\n\nIl prelievo dei campi richiede che il database sottostante esegua una query d''ispezione allo scopo di scegliere valori di default per\nil formato delle maschere che MonetDB possa comprendere.\n\nPremere il pulsante "Preleva campi" per far corrispondere i campi dello stream con quelli della\ntabella del database di destinazione in maniera che l''ordine dei campi sia corretto.
 MonetDBBulkLoaderDialog.Tab.MonetDBmclientSettings.ParameterGroup.NULLrepresentation.Label=Valori NULL rappresentati come
 MonetDBBulkLoaderMeta.CheckResult.AllFieldsFoundInInput=Tutti i campi sono stati trovati nell''input stream.
 MonetDBBulkLoaderMeta.GetSQL.NoTableDefinedOnConnection=Nessuna tabella \u00E8 definita su questa connessione.