Skip to end of banner
Go to start of banner

Azure SQL - Bulk Load

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 34 Next »

On this Page

Snap type:Write
Description:

The Snap Performs a bulk load operation from the input view document stream to the target table by using SQLServerBulkCopy API. It uses a memory buffer to send records to the target table instead of a temporary CSV file. The Batch size and Bulk copy timeout values can be used to tune the performance and memory used.

ETL Transformations and Data Flow

The input document stream is converted to multiple batches, which are bulk-loaded to the target table by using SQLServerBulkCopy API. The Snap converts the input data values according to the corresponding SQL Server column data types to Java class objects which SQLServerBulkCopy accepts.

When facing a com.microsoft.sqlserver.jdbc.SQLServerException error, refer to Errors 4000 - 4999 for more details on the error code.

Input & Output

  • InputAll input documents must contain map data with key-value pair. All keys must spell the same as in columns in the target table (case-sensitive). Input document must not contain any data other than data to be bulk-loaded. All input documents must have the same keys. If the number of keys is smaller than the number of columns in the target table, the Snap fills missing keys with null values. If key names in the input document is different from column names, Mapper Snap can be used to map key names to column names.

  • Output: Reports the bulk-load result in a key-value pair, e.g. {"status" : "34687 records loaded"}
    If no record is loaded (e.g. due to errors), no output document is produced.

While trying to access a column name that contains specific characters as supported by Azure SQL like $, #, @ etc., such field names should be enclosed in the square brackets.

Prerequisites:

SQL Server JDBC driver is required in the Azure SQL database account. SQL Server JDBC driver version 4.1 and older do not support SQLServerBulkCopy API.

Limitations and Known Issues:

  • Does not work in Ultra Pipelines.
  • The Datetime data type is not supported by Microsoft when writing to Azure Data Warehouse. As a workaround, change the data type from datetime to varchar when writing to Azure Data Warehouse. Note that if the table does not exist in the database, enabling the Create table if not present property automatically converts all datetime fields to varchar fields. For more information on this known issue, see Known Limitations for the batch insert operation
Configurations:

Accounts and Access

This Snap uses account references created on the Accounts page of SnapLogic Manager to handle access to this endpoint. See Azure SQL Account for information on setting up this type of account.

Views

InputThis Snap has exactly one document input view.
OutputThis Snap has at most one document output view. If an output view is available, it produces the number of records loaded.
ErrorThis Snap has at most one document error view and produces zero or more documents in the view.
Troubleshooting:None.

Settings


Label

Required. The name for the Snap. You can modify this to be more specific, especially if you have more than one of the same Snap in your pipeline.

Schema Name


The database schema name. In case it is not defined, then the suggestion for the table name will retrieve all tables names of all schemas. The property is suggestible and will retrieve available database schemas during suggest values.

The values can be passed using the pipeline parameters but not the upstream parameter.

Example: SYS

Default value: None

Table Name


Required. The target table to load the incoming data into.

The values can be passed using the pipeline parameters but not the upstream parameter.

Example: users

Default value: None

Create table if not present

Select this check box to create target table in case it does not exist; else the system throws "table not found" error.

In the absence of a second input view (the schema/metadata document), the Snap creates a table based on the data types of the columns generated from the first row of the input document (first input view).

Default value: Deselected
Example: NA

This should not be used in production since there are no indexes or integrity constraints on any column and the default varchar() column is over 30k bytes.

Due to implementation details a newly created table is not visible to subsequent database Snaps during runtime validation. If you wish to immediately use the newly updated data you must use a child pipeline invoked via a Pipe Exec Snap.

Batch size

Sets the number of rows in each batch.

Example: 1000

Default value: 10000

Bulk copy timeout (sec)


Sets the number of seconds for each batch operation to complete before it times out.

A value of 0 indicates no limit; the bulk copy will wait indefinitely.

Default value: 60

Advanced properties

The following additional options for SQLServerBulkCopy are available (true or false, default: false).

Check constraints - Sets whether constraints are to be checked while data is being inserted or not.

Fire triggers - Sets whether the server should be set to fire insert triggers for rows being inserted into the database.

Keep identity - Sets whether or not to preserve any source identity values.

Keep nulls - Sets whether to preserve null values in the destination table regardless of the settings for default values, or if they should be replaced by default values (where applicable).

Table lock - Sets whether SQLServerBulkCopy should obtain a bulk update lock for the duration of the bulk copy operation.

Use internal transaction - Sets whether each batch of the bulk-copy operation will occur within a transaction or not.

Refer to the Microsoft document for further detail.

Snap execution

Select one of the three modes in which the Snap executes. Available options are:

  • Validate & Execute: Performs limited execution of the Snap, and generates a data preview during Pipeline validation. Subsequently, performs full execution of the Snap (unlimited records) during Pipeline runtime.
  • Execute only: Performs full execution of the Snap during Pipeline execution without generating preview data.
  • Disabled: Disables the Snap and all Snaps that are downstream from it.


In a scenario where the Auto commit on the account is set to true, and the downstream Snap does depends on the data processed on an Upstream Database Bulk Load Snap, use the Script Snap to add delay for the data to be available.

For example, when performing a create, insert and a delete function sequentially on a pipeline, using a Script Snap helps in creating a delay between the insert and delete function or otherwise it may turn out that the delete function is triggered even before inserting the records on the table.

Examples

Basic Use Case

In this pipeline, the Azure SQL Bulk Load Snap loads the data from the input stream. The data is bulk loaded into the table "dbo"."datatypetest".

The successful execution of the pipeline displays the below output preview with the status of records loaded:


Typical Snap Configurations


The key configurations for the Snap are:

  • Without Expression: Directly passing the values via the CSV Generator and the Mapper Snaps. 

In the below pipeline, the values are passed via the upstream for the Azure Bulk Load Snap to update the table, "dbo"."@prasanna1" on the Azure.

 

The Azure Bulk Load Snap Loads the data into the table and the Azure Execute Snap reads the table contents respectively:

 

  • With Expressions

    • Pipeline Parameter: Pipeline parameter set to pass the required table name to the Azure SQL Bulk Load Snap. 

In the below pipeline:

 

    1. The JSON Generator Snap passes the values to be added to a table intcol.
    2. The Mapper Snap passes the values to the table intcol  and "dbo"."inttable" to the target table, tablename.
    3. The pipeline parameters are set with values  for Tablename, Batchsize and Timeout.
    4. The Bulk Load Snap loads the records into the _tablename, with _batchsize (as 1) and _timeout (as 60) using the pipeline param values.   
    5. The Execute Snap reads the data from the table, inttableThe output preview displays the three records as added via the JSON Generator Snap.

 


Advanced Use Case

The following describes a pipeline, with a broader business logic involving multiple ETL transformations, that shows how typically in an enterprise environment, Azure SQL Bulk Load functionality is used. The pipeline download is available below.

In the below pipeline, the records from a table on the SQL Server are loaded into a table on the Azure SQL.The Azure SQL Execute Snap reads the records the loaded records on the Azure SQL table.

  1. Extract: The SQL Server Select reads the records form a table on SQL Server.  

  2. Transform: The Mapper Snap maps the metadata from the input schema (SQL Server) to the output schema (Azure SQL)

  3. Load: Azure SQL Bulk Load Snap loads the records into the Azure SQL table. 

  4. Read: The Azure Execute Snap reads the loaded records on the Azure SQL table.  

A similar enterprise scenario where the records from the Oracle server are loaded into the Azure SQL Server. The loaded records are transformed to JSON and written to a file. The Azure SQL Execute Snap reads the records from the table on the Azure SQL.
The pipeline download is available below.

   

  1. Extract: The Oracle Select reads the records form a table on the Oracle Server.  

  2. Transform: The JSON Formatter Snap transforms the output records in to a JSON format and writes them to a file using the File Writer Snap.

  3. Load: Azure SQL Bulk Load Snap loads the records into the Azure SQL table. 

  4. Read: The Azure Execute Snap reads the loaded records on the Azure SQL table.  


Downloads

  File Modified
You are not logged in. Any changes you make will be marked as anonymous. You may want to Log In if you already have an account.
No files shared here yet.
  • Drag and drop to upload or browse for files
  • See Also

    Snap Pack History

     Click to view/expand
    Release Snap Pack VersionDateTypeUpdates
    February 2024436patches25468 Latest

    The Azure SQL Bulk Extract Snap now supports Azure SQL Active Directory and Azure SQL Active Directory Dynamic Accounts.

    February 2024main25112 StableUpdated and certified against the current SnapLogic Platform release.
    November 2023main23721 StableUpdated and certified against the current SnapLogic Platform release.
    August 2023main22460

     

    Stable

    The Azure SQL Execute Snap now includes a new Query type field. When Auto is selected, the Snap determines the query type automatically.

    May 2023main21015 StableUpgraded with the latest SnapLogic Platform release.
    May 2023432patches20967 LatestFixed an issue with the connection pool in the Azure SQL accounts, which was affecting the Snap Pack's performance. You should now experience improved performance when using these accounts.
    March 2023432patches20318 Latest

    The Azure SQL - Bulk Extract Snap no longer fails with a java.lang.NumberFormatException error.

    March 2023432patches20219 LatestFixed an issue with the Azure SQL - Bulk Load Snap involving special characters in JDBC URL properties, such as passwords. Special characters are properly escaped now
    March 2023432patches20049 Latest

    Intermittent connectivity issues no longer occur when using some Snaps in the Azure SQL Snap Pack. These issues caused the following message to display: The connection is broken and recovery is not possible. The connection is marked by the client driver as unrecoverable. No attempt was made to restore the connection

    February 2023main19844 StableUpgraded with the latest SnapLogic Platform release.
    January 2023

    431patches19493

     Latest

    The Azure SQL Active Directory and the Azure SQL Active Directory Dynamic accounts now include an Authentication Mode dropdown list, which allows you to choose the Active Directory authentication mode you would like to use. This enhancement supports Active Directory Service Principal authentication for the Snap Pack.

    December 2022

    431patches19410


     


     

    Stable


    Latest

    Fixed the Azure SQL - Execute Snap using the Azure SQL Active Directory Account that failed with SQL operation failed errors in environments using federated authentication.

    December 2022431patches19263 Latest

    The Azure Synapse SQL Insert Snap no longer includes the Preserve case-sensitivity checkbox because the database is case-insensitive. The database stores the data regardless of whether the columns in the target table and the input data are in mixed, lower, or upper case.

    November 2022main18944 Stable

    The Azure SQL Snap Pack uses the 11.2x driver by default. If you specify any specific driver, ensure that you provide a version higher than 9.1 that is compatible with Microsoft Authentication Library for Java, as this Snap Pack uses the MSAL4J. Otherwise, you may run into issues.

    August 2022

    main17386 Stable

    The Azure Active Directory Search Entries Snap includes a Display Properties field where you can specify the properties to display in the output for the user or group. For the Snap to correctly return the attributes in the output, you must specify the attribute name as described in User profile attributes in Azure Active Directory B2C. Learn more about Properties for a user and Properties for a group.

    4.29 Patch429patches16545 Latest

    Fixed an issue with the Azure SQL-Stored Procedure Snap where the Snap failed with an Invalid value type error when the stored procedure contained an NCHAR data type.

    4.29 Patch429patches16460 Latest

    Fixed an issue with Azure SQL Bulk Load Snap where the Snaplex exited due to insufficient memory when a large number of rows are loaded into the target table and the input data contained a null value for a non-nullable column.

    4.29main15993 Stable

    Enhanced the Azure SQL Account and Azure SQL Active Directory Account with the Disable connection pooling checkbox that allows you to manage session state sharing.

    4.28 Patch428patches15164 Latest

    Fixed an issue with the Azure SQL - Update Snap where the Snap failed with an Incorrect syntax error when a column in a table is of NVARCHAR, NCHAR, or NTEXT data type and this column is part of another NVARCHAR, NCHAR, or NTEXT data type column name and the update condition is specified as an expression.

    4.28 Patch428patches15114 LatestFixed an issue with the Azure SQL - Bulk Load Snap where the decimal values lost precision when they were inserted into the database.
    4.28main14627 StableUpgraded with the latest SnapLogic Platform release.
    4.27main12833 Stable

    Enhanced the Azure SQL - Execute Snap to invoke stored procedures.

    4.26main11181 StableUpgraded with the latest SnapLogic Platform release.
    4.25main9554
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.24main8556
    Stable

    Enhances the Azure SQL - Stored Procedure to accept parameters from input documents by column keys. If the values are empty, the parameters are populated based on the column keys for easier mapping in the upstream Mapper Snap.

    4.23main7430
     
    Stable

    Enhances the Azure SQL - Bulk Extract Snap by adding a new check box Enable UTF-8 encoding to support UTF-8 encoded characters. This check box allows the Snap to update the BCP command to read the special characters.

    4.22 Patch 422Patches6751 Latest

    Enhances the Azure SQL - Bulk Extract Snap by adding a new check box Enable UTF-8 encoding to support UTF-8 encoded characters. Selected by default, this check box allows the Snap to update the BCP command to read these special characters.

    4.22main6403
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.21 Patch 421patches6272 Latest

    Fixes the issue where Snowflake SCD2 Snap generates two output documents despite no changes to Cause-historization fields with DATE, TIME and TIMESTAMP Snowflake data types, and with Ignore unchanged rows field selected.

    4.21 Patch 421patches6144 Latest

    Fixes the following issues with DB Snaps:

    • The connection thread waits indefinitely causing the subsequent connection requests to become unresponsive.
    • Connection leaks occur during Pipeline execution.
    4.21 Patch421patches5864 Latest

    Adds support for UTF_8 characters with BCP (bulk copy program) command to the Azure SQL Bulk Extract Snap.

    4.21 PatchMULTIPLE8841 Latest

    Fixes the connection issue in Database Snaps by detecting and closing open connections after the Snap execution ends. 

    4.21snapsmrc542

     

    StableUpgraded with the latest SnapLogic Platform release.
    4.20snapsmrc535
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.19 Patch db/azuresql8403 Latest

    Fixes an issue with the Azure SQL - Update Snap wherein the Snap is unable to perform operations when:

    • An expression is used in the Update condition property.
    • Input data contain the character '?'.
    4.19snaprsmrc528
     
    Stable

    Enhanced the error handling in PolyBase Bulk Load Snap when writing to a data warehouse. The Snap writes a new blob in the Azure container. This new blob highlights the first invalid row that caused the bulk load operation to fail.

    4.18snapsmrc523
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.17ALL7402
     
    Latest

    Pushed automatic rebuild of the latest version of each Snap Pack to SnapLogic UAT and Elastic servers.

    4.17snapsmrc515
     
    Latest
    • Fixes an issue with the Azure SQL Execute Snap wherein the Snap would send the input document to the output view even if the Pass through field is not selected in the Snap configuration. With this fix, the Snap sends the input document to the output view, under the key original, only if you select the Pass through field. 
    • Added the Snap Execution field to all Standard-mode Snaps. In some Snaps, this field replaces the existing Execute during preview check box.
    4.16 Patch db/azuresql7179 Latest

    Fixes an issue with the Azure SQL Bulk Extract Snap wherein the Snap fails to process all the metadata information of the input table and schema.

    4.16snapsmrc508
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.15 Patch db/azuresql6327 Latest

    Replaced Max idle time and Idle connection test period properties with Max life time and Idle Timeout properties respectively, in the Account configuration. The new properties fix the connection release issues that were occurring due to default/restricted DB Account settings.

    4.15snapsmrc500
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.14snapsmrc490
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.13

    snapsmrc486

     
    StableUpgraded with the latest SnapLogic Platform release.
    4.12

    snapsmrc480

     
    StableUpgraded with the latest SnapLogic Platform release.
    4.11 Patchazuresql4631 Latest

    Fixes an issue with the Azure Polybase Bulk Load Snap that failed with "Parse error" when there was no input.

    4.11 Patch db/azuresql4326 Latest
    • Fixes an issue with the Azure SQL Polybase Bulk Load Snap, that allowed the Snap to load data into a table with identity columns for Azure SQL Data Warehouse instance.
    • Fixes encoding issue when using a Windows plex, and added a "Encoding" Snap property that allows user to choose input data's encoding from UTF-8 and UTF-16.
    4.11snapsmrc465
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.10

    snapsmrc414

     
    Stable
    • Renamed the Azure SQL Bulk Load Snap to Polybase Bulk Load as it supports Azure SQL DW and SQL Server (starting with 2016).
    • The new Snap, Azure SQL Bulk Load is developed has been developed to carry out the bulk load function extensively for Azure SQL DB. (The old Azure Bulk Load has been renamed to Polybase BulkLoad  which works for on-premise SQL Server and Azure SQL Data Warehouse with polybase functionality).
    • Azure SQL Bulk Load, Table List, Execute, Stored ProcedureAzure SQL - Table Listand Update Snaps are released in this release.
    • Added Auto commit property to the Select and Execute Snaps at the Snap level to support overriding of the Auto commit property at the Account level.
    • Added the below accounts:
      • Azure SQL Active Directory Account

      • Azure SQL Active Directory Dynamic Account

    4.9 Patch azuresql3078 Latest

    Fixes an issue regarding connection not closed after login failure; Expose autocommit for "Select into" statement in PostgreSQL Execute Snap and Redshift Execute Snap

    4.9snapsmrc405
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.8 Patch azuresql2750
    Latest

    Potential fix for JDBC deadlock issue.

    4.8

    snapsmrc398

     
    Stable
    • Info tab added to accounts.
    • Database accounts now invalidate connection pools if account properties are modified and login attempts fail.
    4.7 Patchazuresql2196 Latest

    Fixes an issue for database Select Snaps regarding Limit rows not supporting an empty string from a pipeline parameter.

    4.7

    snapsmrc382

     
    StableUpgraded with the latest SnapLogic Platform release.
    4.6snapsmrc362
     
    StableUpgraded with the latest SnapLogic Platform release.
    4.5.1

    snapsmrc344

     
    StableUpgraded with the latest SnapLogic Platform release.
    4.5

    snapsmrc344

     StableUpgraded with the latest SnapLogic Platform release.
    • No labels