{"id":11762,"date":"2026-02-27T12:01:24","date_gmt":"2026-02-27T12:01:24","guid":{"rendered":"https:\/\/zappysys.com\/blog\/?p=11762"},"modified":"2026-03-02T16:01:42","modified_gmt":"2026-03-02T16:01:42","slug":"ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql","status":"publish","type":"post","link":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/","title":{"rendered":"SSIS tutorial: Migrating MariaDB data to PostgreSQL"},"content":{"rendered":"<h2>Introduction<\/h2>\n<p><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-6816 alignleft\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png\" alt=\"PostgreSql Destination\" width=\"100\" height=\"100\" \/><\/a>In our previous post, we explored how to read and write PostgreSQL data using the ZappySys <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-postgresql-source\/\">PostgreSQL Source<\/a> and <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-postgresql-destination\/\">Destination<\/a> connectors for SSIS. In this article, you will learn how to connect MariaDB to PostgreSQL using ZappySys SSIS PowerPack and transfer data between both systems.<\/p>\n<p>We will demonstrate a practical ETL pattern using ZappySys ODBC\/JDBC connectivity to extract data from MariaDB and load it into PostgreSQL within SSIS.<\/p>\n<h2>Prerequisites<\/h2>\n<p>Before you begin, make sure you have the following:<\/p>\n<ul>\n<li>First, you will need to have SSIS installed<\/li>\n<li>Secondly, make sure to have SSDT<\/li>\n<li>Thirdly, access credentials for both MariaDB and PostgreSQL<\/li>\n<li>Finally, do not forget to install\u00a0ZappySys\u00a0<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">SSIS PowerPack<\/a> and\u00a0ZappySys\u00a0<a href=\"https:\/\/zappysys.com\/products\/ODBC-powerpack\/\" target=\"_blank\" rel=\"noopener\">ODBC PowerPack<\/a><\/li>\n<\/ul>\n<h2>Steps<\/h2>\n<h3>Configure MariaDB Connection Using ODBC (JDBC Bridge)<\/h3>\n<p>Since MariaDB connectivity is handled via JDBC, we will use the <strong>ZappySys JDBC Bridge Driver<\/strong> to expose it as an ODBC data source.<\/p>\n<ol>\n<li>Visit the <a href=\"https:\/\/mariadb.com\/downloads\/connectors\/connectors-data-access\/java8-connector\">official MariaDB website<\/a>.<\/li>\n<li>Download the latest <strong>MariaDB JDBC driver<\/strong>.<\/li>\n<li>Save the <code inline=\"\">.jar<\/code> file locally, for example: <span style=\"background-color: #f2f4f5; color: #222222; font-family: 'Courier 10 Pitch', Courier, monospace; font-size: 12.8px;\">D:\\Zappysys\\drivers\\mariadb-java-client-3.5.7.jar<\/span><\/li>\n<li>Download and install <a href=\"https:\/\/zappysys.com\/products\/odbc-powerpack\/download\/\"><strong>ZappySys ODBC PowerPack<\/strong><\/a> if not already installed.<\/li>\n<li>Open <strong>ODBC Data Sources (64-bit)<\/strong>.\n<div id=\"attachment_6213\" style=\"width: 404px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/01\/how-to-open-odbc-data-source-administrator-2.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-6213\" class=\"wp-image-6213 size-full\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/01\/how-to-open-odbc-data-source-administrator-2.png\" alt=\"\" width=\"394\" height=\"542\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/01\/how-to-open-odbc-data-source-administrator-2.png 394w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/01\/how-to-open-odbc-data-source-administrator-2-218x300.png 218w\" sizes=\"(max-width: 394px) 100vw, 394px\" \/><\/a><p id=\"caption-attachment-6213\" class=\"wp-caption-text\">Open ODBC Data Sources<\/p><\/div><\/li>\n<li>Create a\u00a0<strong>User data source<\/strong>\u00a0(User DSN) based on\u00a0<strong>ZappySys JDBC Bridge Driver<\/strong>:\n<div id=\"attachment_11767\" style=\"width: 632px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Create-a-User-data-source.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11767\" class=\"size-full wp-image-11767\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Create-a-User-data-source.png\" alt=\"\" width=\"622\" height=\"517\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Create-a-User-data-source.png 622w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Create-a-User-data-source-300x249.png 300w\" sizes=\"(max-width: 622px) 100vw, 622px\" \/><\/a><p id=\"caption-attachment-11767\" class=\"wp-caption-text\">Create a User data source<\/p><\/div><\/li>\n<li>Configure the JDBC Connection. Fill in the connection details\n<ul style=\"list-style-type: disc;\">\n<li><strong>Connection String\u00a0 <\/strong><code>jdbc:mariadb:\/\/{host-name}:{port}\/{database-name}<br \/>\n<\/code><\/li>\n<li><strong>JDBC Driver File <\/strong><code>D:\\Zappysys\\drivers\\mariadb-java-client-3.5.7.jar<br \/>\n<\/code><\/li>\n<li><strong>Username <\/strong><code>root<br \/>\n<\/code><\/li>\n<li><strong>Password <\/strong><code>********<br \/>\n<\/code><\/li>\n<li><strong>Connection Parameters<\/strong><code>[]<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Click <strong>Test Connection<\/strong>. If configured correctly, you should see a success message.\n<div class=\"mceTemp\"><\/div>\n<div id=\"attachment_11768\" style=\"width: 814px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-Mariadb.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11768\" class=\"size-full wp-image-11768\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-Mariadb.png\" alt=\"\" width=\"804\" height=\"704\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-Mariadb.png 804w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-Mariadb-300x263.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-Mariadb-768x672.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/a><p id=\"caption-attachment-11768\" class=\"wp-caption-text\">Zappysys JDBC &#8211; MariaDB<\/p><\/div><\/li>\n<li>You can also use the <strong>Preview<\/strong> tab to select the table and execute SQL queries. For advanced SQL examples, refer to the <a href=\"https:\/\/zappysys.com\/onlinehelp\/odbc-powerpack\/index.htm#page=jdbc-odbc-driver-sql-query-examples.htm\" target=\"_blank\" rel=\"noopener\">JDBC Bridge documentation<\/a>.\n<div id=\"attachment_11769\" style=\"width: 814px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-MariaDB-preview-result.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11769\" class=\"size-full wp-image-11769\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-MariaDB-preview-result.png\" alt=\"\" width=\"804\" height=\"704\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-MariaDB-preview-result.png 804w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-MariaDB-preview-result-300x263.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Zappysys-JDBC-MariaDB-preview-result-768x672.png 768w\" sizes=\"(max-width: 804px) 100vw, 804px\" \/><\/a><p id=\"caption-attachment-11769\" class=\"wp-caption-text\">Zappysys JDBC &#8211; MariaDB preview result<\/p><\/div><\/li>\n<\/ol>\n<h3>Connect MariaDB to SSIS<\/h3>\n<ol>\n<li>Open <strong>Visual Studio<\/strong>.<\/li>\n<li>Create a <strong>New Project<\/strong>.<\/li>\n<li>Select <strong>Integration Services Project<\/strong>.<\/li>\n<li>Provide a project name and location, then click <strong>OK<\/strong>.<\/li>\n<li>Drag and drop a <strong>Data Flow Task<\/strong> from the SSIS Toolbox onto the Control Flow surface.\n<div id=\"attachment_11784\" style=\"width: 485px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-Data-flow.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11784\" class=\"size-full wp-image-11784\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-Data-flow.png\" alt=\"\" width=\"475\" height=\"178\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-Data-flow.png 475w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-Data-flow-300x112.png 300w\" sizes=\"(max-width: 475px) 100vw, 475px\" \/><\/a><p id=\"caption-attachment-11784\" class=\"wp-caption-text\">Drag and drop Data flow.<\/p><\/div><\/li>\n<li>Double-click the task to open the <strong>Data Flow Designer<\/strong>.<\/li>\n<li>Drag and drop an <strong>ODBC Source<\/strong> component into the Data Flow.\n<div id=\"attachment_11783\" style=\"width: 489px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-ODBC-source.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11783\" class=\"size-full wp-image-11783\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-ODBC-source.png\" alt=\"\" width=\"479\" height=\"227\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-ODBC-source.png 479w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-ODBC-source-300x142.png 300w\" sizes=\"(max-width: 479px) 100vw, 479px\" \/><\/a><p id=\"caption-attachment-11783\" class=\"wp-caption-text\">Drag and drop the ODBC source.<\/p><\/div><\/li>\n<li>Double-click the component to configure it.<\/li>\n<li>Click <strong>New\u2026<\/strong> to create a new ODBC Connection Manager.\n<div id=\"attachment_11772\" style=\"width: 763px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11772\" class=\"size-full wp-image-11772\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS.png\" alt=\"\" width=\"753\" height=\"685\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS.png 753w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS-300x273.png 300w\" sizes=\"(max-width: 753px) 100vw, 753px\" \/><\/a><p id=\"caption-attachment-11772\" class=\"wp-caption-text\">Creating an ODBC Connection Manager in SSIS<\/p><\/div><\/li>\n<li>Select the MariaDB ODBC DSN you created earlier.<\/li>\n<li>Click <strong>Test Connection <\/strong>and click <strong>OK <\/strong>to save the configuration.\n<div id=\"attachment_11773\" style=\"width: 724px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS-from-JDBC.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11773\" class=\"size-full wp-image-11773\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS-from-JDBC.png\" alt=\"\" width=\"714\" height=\"620\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS-from-JDBC.png 714w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Creating-ODBC-Connection-Manager-in-SSIS-from-JDBC-300x261.png 300w\" sizes=\"(max-width: 714px) 100vw, 714px\" \/><\/a><p id=\"caption-attachment-11773\" class=\"wp-caption-text\">Creating an ODBC Connection Manager in SSIS from JDBC<\/p><\/div><\/li>\n<li>Choose <strong>Data Access Mode: <\/strong>Table name or SQL command.<\/li>\n<li>Select the desired table or enter a custom query.<\/li>\n<li><span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\"><span style=\"box-sizing: border-box; margin: 0px; padding: 0px;\">Click\u00a0<strong>Preview<\/strong>\u00a0to validate the data, and click\u00a0<strong>OK <\/strong>to save the configuration.<br \/>\n<\/span><\/span><\/p>\n<div id=\"attachment_11774\" style=\"width: 763px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Preview-ODBC-Connection-Manager-in-SSIS-from-JDBC.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11774\" class=\"size-full wp-image-11774\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Preview-ODBC-Connection-Manager-in-SSIS-from-JDBC.png\" alt=\"\" width=\"753\" height=\"637\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Preview-ODBC-Connection-Manager-in-SSIS-from-JDBC.png 753w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Preview-ODBC-Connection-Manager-in-SSIS-from-JDBC-300x254.png 300w\" sizes=\"(max-width: 753px) 100vw, 753px\" \/><\/a><p id=\"caption-attachment-11774\" class=\"wp-caption-text\">Preview an ODBC Connection Manager in SSIS from JDBC<\/p><\/div><\/li>\n<\/ol>\n<h3>Configure PostgreSQL Destination<\/h3>\n<ol>\n<li>In the Connection Manager pane, click <strong>New Connection<\/strong>.<\/li>\n<li>Select <strong>ZS-POSTGRESQL<\/strong>.<\/li>\n<li>Configure the connection:\n<ul style=\"list-style-type: disc;\">\n<li>Host<\/li>\n<li>Username<\/li>\n<li>Password<\/li>\n<li>Port<\/li>\n<li>Database name<\/li>\n<\/ul>\n<\/li>\n<li>Use the other tabs for more configuration if needed<\/li>\n<li>Click <strong>Test Connection <\/strong>and Click <strong>OK<\/strong>.\n<div id=\"attachment_11788\" style=\"width: 698px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-connection-configuration.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11788\" class=\"size-full wp-image-11788\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-connection-configuration.png\" alt=\"\" width=\"688\" height=\"580\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-connection-configuration.png 688w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-connection-configuration-300x253.png 300w\" sizes=\"(max-width: 688px) 100vw, 688px\" \/><\/a><p id=\"caption-attachment-11788\" class=\"wp-caption-text\">PostgreSQL connection configuration<\/p><\/div><\/li>\n<li>Drag and drop the <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-postgresql-destination\/\"><strong>PostgreSQL Destination<\/strong><\/a> component.\n<div id=\"attachment_11785\" style=\"width: 556px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-PostgreSQL-destination.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11785\" class=\"size-full wp-image-11785\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-PostgreSQL-destination.png\" alt=\"\" width=\"546\" height=\"261\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-PostgreSQL-destination.png 546w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Drag-and-drop-PostgreSQL-destination-300x143.png 300w\" sizes=\"(max-width: 546px) 100vw, 546px\" \/><\/a><p id=\"caption-attachment-11785\" class=\"wp-caption-text\">Drag and drop the PostgreSQL destination.<\/p><\/div><\/li>\n<li>Connect it to the <strong>ODBC Source <\/strong>and double-click to configure it.<\/li>\n<li>Select the PostgreSQL connection.\n<div id=\"attachment_11775\" style=\"width: 723px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-connection.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11775\" class=\"size-full wp-image-11775\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-connection.png\" alt=\"\" width=\"713\" height=\"364\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-connection.png 713w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-connection-300x153.png 300w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/a><p id=\"caption-attachment-11775\" class=\"wp-caption-text\">PostgreSQL Destination &#8211; Choose the connection<\/p><\/div><\/li>\n<li>Go to the <strong>Properties<\/strong> tab and choose the target table.\n<div id=\"attachment_11776\" style=\"width: 733px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-target-table.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11776\" class=\"size-full wp-image-11776\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-target-table.png\" alt=\"\" width=\"723\" height=\"664\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-target-table.png 723w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Choose-the-target-table-300x276.png 300w\" sizes=\"(max-width: 723px) 100vw, 723px\" \/><\/a><p id=\"caption-attachment-11776\" class=\"wp-caption-text\">PostgreSQL Destination &#8211; Choose the target table<\/p><\/div><\/li>\n<li>Go to the <strong>Column Mappings<\/strong> tab and map source columns to destination columns.\n<div id=\"attachment_11777\" style=\"width: 723px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Map-the-columns.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11777\" class=\"size-full wp-image-11777\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Map-the-columns.png\" alt=\"\" width=\"713\" height=\"624\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Map-the-columns.png 713w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Map-the-columns-300x263.png 300w\" sizes=\"(max-width: 713px) 100vw, 713px\" \/><\/a><p id=\"caption-attachment-11777\" class=\"wp-caption-text\">PostgreSQL Destination &#8211; Map the columns<\/p><\/div><\/li>\n<li>Click <strong>OK <\/strong>to save the configuration.<\/li>\n<li>Run the SSIS package. If everything is configured correctly, the data will be transferred from MariaDB to PostgreSQL.\n<div id=\"attachment_11778\" style=\"width: 272px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Final-result.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11778\" class=\"size-full wp-image-11778\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/PostgreSQL-Destination-Final-result.png\" alt=\"\" width=\"262\" height=\"246\" \/><\/a><p id=\"caption-attachment-11778\" class=\"wp-caption-text\">PostgreSQL Destination &#8211; Final result<\/p><\/div><\/li>\n<\/ol>\n<h3>Alternative Option \u2014 Using Upsert Destination<\/h3>\n<p>An alternative destination component is the <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-upsert-destination\/\">Upsert Destination<\/a>; you can replace it with the PostgreSQL destination. You can preview data from the element, select the options to insert or\/and update, and more.<\/p>\n<ol>\n<li>Replace the PostgreSQL Destination with the <a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/ssis-upsert-destination\/\"><strong>Upsert Destination<\/strong><\/a>.<\/li>\n<li>Select your PostgreSQL connection.<\/li>\n<li>Choose the target table.<\/li>\n<li>Choose <strong>Insert<\/strong> or\/and <strong>Update<\/strong> action.n<\/li>\n<li>Map the columns.<\/li>\n<li>Select the primary key column(s).<\/li>\n<li>Configure additional options under the <strong>Advanced<\/strong> tab if needed.\n<div id=\"attachment_11779\" style=\"width: 968px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-PostgreSQL-destination-table.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11779\" class=\"size-full wp-image-11779\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-PostgreSQL-destination-table.png\" alt=\"\" width=\"958\" height=\"569\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-PostgreSQL-destination-table.png 958w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-PostgreSQL-destination-table-300x178.png 300w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-PostgreSQL-destination-table-768x456.png 768w\" sizes=\"(max-width: 958px) 100vw, 958px\" \/><\/a><p id=\"caption-attachment-11779\" class=\"wp-caption-text\">Upsert Destination &#8211; PostgreSQL destination table<\/p><\/div><\/li>\n<li>Run the package to perform the upsert operation.\n<div id=\"attachment_11780\" style=\"width: 381px\" class=\"wp-caption alignnone\"><a href=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-Final-result.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-11780\" class=\"size-full wp-image-11780\" src=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-Final-result.png\" alt=\"\" width=\"371\" height=\"283\" srcset=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-Final-result.png 371w, https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2026\/02\/Upsert-Destination-Final-result-300x229.png 300w\" sizes=\"(max-width: 371px) 100vw, 371px\" \/><\/a><p id=\"caption-attachment-11780\" class=\"wp-caption-text\">Upsert Destination &#8211; Final result<\/p><\/div><\/li>\n<\/ol>\n<h2>Conclusion<\/h2>\n<p>With ZappySys SSIS PowerPack and ODBC PowerPack, connecting MariaDB to PostgreSQL becomes straightforward and reliable.<\/p>\n<p>By configuring the ODBC\/JDBC bridge for MariaDB and using the native PostgreSQL destination in SSIS, you can build a robust ETL pipeline between the two databases.<\/p>\n<p>Explore the full capabilities of the ZappySys\u00a0<a href=\"https:\/\/zappysys.com\/products\/ssis-powerpack\/\" target=\"_blank\" rel=\"noopener\">SSIS PowerPack<\/a> and\u00a0ZappySys\u00a0<a href=\"https:\/\/zappysys.com\/products\/ODBC-powerpack\/\" target=\"_blank\" rel=\"noopener\">ODBC PowerPack<\/a> to optimize your data integration tasks.<\/p>\n<h1>Need Help?<\/h1>\n<p>If you encounter any issues, our support team is here to help:<\/p>\n<ul>\n<li><strong>Live Chat<\/strong> \u2014 Use the chat widget (bottom-right corner of this page)<\/li>\n<li><strong>Email<\/strong> \u2014 <a href=\"mailto:support@zappysys.com\">support@zappysys.com<\/a><\/li>\n<li><strong>Support Center<\/strong> \u2014 Support | ZappySys<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction In our previous post, we explored how to read and write PostgreSQL data using the ZappySys PostgreSQL Source and Destination connectors for SSIS. In this article, you will learn how to connect MariaDB to PostgreSQL using ZappySys SSIS PowerPack and transfer data between both systems. We will demonstrate a practical ETL pattern using ZappySys [&hellip;]<\/p>\n","protected":false},"author":5,"featured_media":6816,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[463,484],"tags":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>SSIS tutorial: Migrating MariaDB data to PostgreSQL | ZappySys Blog<\/title>\r\n<meta name=\"description\" content=\"SSIS tutorial: Migrating MariaDB data to PostgreSQL - ZappySys Blog\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"SSIS tutorial: Migrating MariaDB data to PostgreSQL | ZappySys Blog\" \/>\r\n<meta property=\"og:description\" content=\"SSIS tutorial: Migrating MariaDB data to PostgreSQL - ZappySys Blog\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/\" \/>\r\n<meta property=\"og:site_name\" content=\"ZappySys Blog\" \/>\r\n<meta property=\"article:published_time\" content=\"2026-02-27T12:01:24+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2026-03-02T16:01:42+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png\" \/>\r\n\t<meta property=\"og:image:width\" content=\"100\" \/>\r\n\t<meta property=\"og:image:height\" content=\"100\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\r\n<meta name=\"author\" content=\"ZappySys Team\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"ZappySys Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/\",\"url\":\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/\",\"name\":\"SSIS tutorial: Migrating MariaDB data to PostgreSQL | ZappySys Blog\",\"isPartOf\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png\",\"datePublished\":\"2026-02-27T12:01:24+00:00\",\"dateModified\":\"2026-03-02T16:01:42+00:00\",\"author\":{\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/91b041e2dcf7ece5f068893c1a68ac6e\"},\"description\":\"SSIS tutorial: Migrating MariaDB data to PostgreSQL - ZappySys Blog\",\"breadcrumb\":{\"@id\":\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#primaryimage\",\"url\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png\",\"contentUrl\":\"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png\",\"width\":100,\"height\":100,\"caption\":\"PostgreSql Destination\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/zappysys.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SSIS tutorial: Migrating MariaDB data to PostgreSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/zappysys.com\/blog\/#website\",\"url\":\"https:\/\/zappysys.com\/blog\/\",\"name\":\"ZappySys Blog\",\"description\":\"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/zappysys.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/91b041e2dcf7ece5f068893c1a68ac6e\",\"name\":\"ZappySys Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/746bec9c9d27f1b90bb181aa516ee234?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/746bec9c9d27f1b90bb181aa516ee234?s=96&d=mm&r=g\",\"caption\":\"ZappySys Team\"},\"sameAs\":[\"https:\/\/zappysys.com\"],\"url\":\"https:\/\/zappysys.com\/blog\/author\/dcalbimonte\/\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SSIS tutorial: Migrating MariaDB data to PostgreSQL | ZappySys Blog","description":"SSIS tutorial: Migrating MariaDB data to PostgreSQL - ZappySys Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"SSIS tutorial: Migrating MariaDB data to PostgreSQL | ZappySys Blog","og_description":"SSIS tutorial: Migrating MariaDB data to PostgreSQL - ZappySys Blog","og_url":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/","og_site_name":"ZappySys Blog","article_published_time":"2026-02-27T12:01:24+00:00","article_modified_time":"2026-03-02T16:01:42+00:00","og_image":[{"width":100,"height":100,"url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png","type":"image\/png"}],"author":"ZappySys Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"ZappySys Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/","url":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/","name":"SSIS tutorial: Migrating MariaDB data to PostgreSQL | ZappySys Blog","isPartOf":{"@id":"https:\/\/zappysys.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#primaryimage"},"image":{"@id":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#primaryimage"},"thumbnailUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png","datePublished":"2026-02-27T12:01:24+00:00","dateModified":"2026-03-02T16:01:42+00:00","author":{"@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/91b041e2dcf7ece5f068893c1a68ac6e"},"description":"SSIS tutorial: Migrating MariaDB data to PostgreSQL - ZappySys Blog","breadcrumb":{"@id":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#primaryimage","url":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png","contentUrl":"https:\/\/zappysys.com\/blog\/wp-content\/uploads\/2019\/04\/ssis-PostgreSql-Destination.png","width":100,"height":100,"caption":"PostgreSql Destination"},{"@type":"BreadcrumbList","@id":"https:\/\/zappysys.com\/blog\/ssis-tutorial-how-to-migrate-mariadb-data-to-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/zappysys.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SSIS tutorial: Migrating MariaDB data to PostgreSQL"}]},{"@type":"WebSite","@id":"https:\/\/zappysys.com\/blog\/#website","url":"https:\/\/zappysys.com\/blog\/","name":"ZappySys Blog","description":"SSIS \/ ODBC Drivers \/ API Connectors for JSON, XML, Azure, Amazon AWS, Salesforce, MongoDB and more","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/zappysys.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/91b041e2dcf7ece5f068893c1a68ac6e","name":"ZappySys Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/zappysys.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/746bec9c9d27f1b90bb181aa516ee234?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/746bec9c9d27f1b90bb181aa516ee234?s=96&d=mm&r=g","caption":"ZappySys Team"},"sameAs":["https:\/\/zappysys.com"],"url":"https:\/\/zappysys.com\/blog\/author\/dcalbimonte\/"}]}},"_links":{"self":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/11762"}],"collection":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/comments?post=11762"}],"version-history":[{"count":17,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/11762\/revisions"}],"predecessor-version":[{"id":11822,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/posts\/11762\/revisions\/11822"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media\/6816"}],"wp:attachment":[{"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/media?parent=11762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/categories?post=11762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/zappysys.com\/blog\/wp-json\/wp\/v2\/tags?post=11762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}