{"id":14751,"date":"2020-09-30T11:08:27","date_gmt":"2020-09-30T09:08:27","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/"},"modified":"2020-09-30T11:08:27","modified_gmt":"2020-09-30T09:08:27","slug":"getting-started-with-exasol-loading-data-from-postgresql","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/","title":{"rendered":"Getting started with Exasol \u2013 Loading data from PostgreSQL"},"content":{"rendered":"<p>In the <a href=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-setting-up-an-environment\/\" target=\"_blank\" rel=\"noopener noreferrer\">first post of this series<\/a> we brought up an Exasol test system to have something to play with. Because playing without data is a bit boring this post is about loading data from PostgreSQL to Exasol. We&#8217;ll use <a href=\"https:\/\/www.postgresql.org\/docs\/13\/pgbench.html\" target=\"_blank\" rel=\"noopener noreferrer\">pgbench<\/a> on the PostgreSQL side to generate some data and then load that into Exasol.<\/p>\n<p><!--more-->   <\/p>\n<p>Exasol comes with a concept called <a href=\"https:\/\/docs.exasol.com\/database_concepts\/virtual_schemas.htm?Highlight=virtual%20schema\" target=\"_blank\" rel=\"noopener noreferrer\">&#8220;virtual schemas&#8221;<\/a>. If you know PostgreSQL you can compare that to <a href=\"https:\/\/www.postgresql.org\/docs\/13\/ddl-foreign-data.html\" target=\"_blank\" rel=\"noopener noreferrer\">foreign data wrappers<\/a>. The purpose is to access data on foreign systems of any kind and integrate that into the system. The data on the foreign system is accessed through standard SQL commands, very much the same like PostgreSQL is doing it. In contrast to PostgreSQL, Exasol usually uses JDBC to connect to a foreign data source, here is the list of <a href=\"https:\/\/docs.exasol.com\/database_concepts\/virtual_schema\/dialects.htm\" target=\"_blank\" rel=\"noopener noreferrer\">currently supported JDBC dialects<\/a>. You are not limited to one of those, you can well go ahead and combine any of these and centralize your reporting (or whatever you plan to do with the foreign data) into Exasol. There is also a <a href=\"https:\/\/github.com\/exasol\/virtual-schemas\" target=\"_blank\" rel=\"noopener noreferrer\">GitHub project<\/a> which provides additional information around abadapters and virtual schemas.<\/p>\n<p>Before you can connect to an external system you need to install the corresponding JDBC driver but in the case of PostgreSQL the JDBC driver is already there by default. You can check that in the web interface of Exasol:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg\" alt=\"\" width=\"1215\" height=\"540\" class=\"aligncenter size-full wp-image-43744\" \/><\/a>.<\/p>\n<p>We will anyway upload the latest PostgreSQL driver to show the procedure. To upload the latest driver, again go to EXAOperations and locate the drivers tab under software adn press &#8220;Add&#8221;:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-10-08-57-1.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-10-08-57-1.jpg\" alt=\"\" width=\"1030\" height=\"457\" class=\"aligncenter size-full wp-image-43761\" \/><\/a><br \/>\nAdd the driver details:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-10-41-09.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-10-41-09.jpg\" alt=\"\" width=\"935\" height=\"527\" class=\"aligncenter size-full wp-image-43750\" \/><\/a><br \/>\nLocate the driver (can be downloaded from <a href=\"jdbc.postgresql.org\" target=\"_blank\" rel=\"noopener noreferrer\">jdbc.postgresql.org<\/a>) and upload the jar file:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-10-42-42.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-10-42-42.jpg\" alt=\"\" width=\"1282\" height=\"558\" class=\"aligncenter size-full wp-image-43751\" \/><\/a><\/p>\n<p>That&#8217;s it for the driver update.<\/p>\n<p>Before we connect Exasol to PostgreSQL, let&#8217;s prepare the data on the PostgreSQL side:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# create user exasol with login password 'exasol';\nCREATE ROLE\npostgres=# create database exasol with owner = exasol;\nCREATE DATABASE\npostgres=# \\! pgbench -i -s 100 -U exasol exasol\ndropping old tables...\ncreating tables...\ngenerating data...\n100000 of 10000000 tuples (1%) done (elapsed 0.07 s, remaining 7.14 s)\n200000 of 10000000 tuples (2%) done (elapsed 0.19 s, remaining 9.21 s)\n...\n10000000 of 10000000 tuples (100%) done (elapsed 17.42 s, remaining 0.00 s)\nvacuuming...\ncreating primary keys...\ndone.\n<\/pre>\n<p>That gives as 10 million rows in the pgbench_accounts table:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\npostgres=# \\c exasol exasol\nYou are now connected to database \"exasol\" as user \"exasol\".\nexasol=&gt; select count(*) from pgbench_accounts;\n  count   \n----------\n 10000000\n(1 row)\n<\/pre>\n<p>On the Exasol side, the first thing you need to do is to <a href=\"https:\/\/docs.exasol.com\/sql\/create_connection.htm?Highlight=create%20connection\" target=\"_blank\" rel=\"noopener noreferrer\">create a connection<\/a> (In PostgreSQL that would be the foreign server and the user mapping):<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\ndwe@dwe:~\/EXAplus-7.0.0$ .\/exaplus -c 192.168.22.117:8563 -u sys -p exasol\nEXAplus 7.0.0 (c) EXASOL AG\n\nWednesday, September 30, 2020 at 9:49:38 AM Central European Summer Time\nConnected to database EXAone as user sys.\nEXASolution 7.0.2 (c) EXASOL AG\n\nSQL_EXA&gt; CREATE OR REPLACE CONNECTION JDBC_POSTGRESQL\n1    &gt;  TO 'jdbc:postgresql:\/\/192.168.22.11:5433\/exasol'\n2    &gt;  USER 'exasol'\n3    &gt;  IDENTIFIED BY 'exasol';\nEXA: CREATE OR REPLACE CONNECTION JDBC_POSTGRESQL...\n\nRows affected: 0\n<\/pre>\n<p>To test that connection you can simply do:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL_EXA&gt; IMPORT FROM JDBC AT JDBC_POSTGRESQL STATEMENT ' SELECT ''OK'' ';\nEXA: IMPORT FROM JDBC AT JDBC_POSTGRESQL STATEMENT ' SELECT ''OK'' ';\n\n?column?                                                                                                                                                                                                \n--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------\nOK                                                                                                                                                                                                      \n\n1 row in resultset.\n\nSQL_EXA&gt; \n<\/pre>\n<p>Now is the time to create the virtual schema so we can access the tables on the PostgreSQL side via plan SQL. Before we can do that we need to deploy the adapter. The PostgreSQL JDBC driver must be uploaded to BucketFS and I&#8217;ve created a new bucket for that:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-11-08-16.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-11-08-16.jpg\" alt=\"\" width=\"947\" height=\"354\" class=\"aligncenter size-full wp-image-43753\" \/><\/a><\/p>\n<p><a href=\"https:\/\/docs.exasol.com\/database_concepts\/bucketfs\/bucketfs.htm\" target=\"_blank\" rel=\"noopener noreferrer\">BucketFS<\/a> is an internal file system that gets synchronized automatically between the Exasol cluster nodes.<\/p>\n<p>The easiest way to upload files is to use <a href=\"https:\/\/github.com\/exasol\/bucketfs-explorer\" target=\"_blank\" rel=\"noopener noreferrer\">the bucket explorer<\/a> but you could also use curl against the REST API:<\/p>\n<pre class=\"brush: bash; gutter: true; first-line: 1\">\ndwe@dwe:~\/Downloads$ curl --user admin -v -X PUT -T postgresql-42.2.16.jar  http:\/\/192.168.22.117:2580\/bucketfs\/bucketfs1\/drivers\/postgresql-42.2.16.jar\n<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-11-22-46.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-11-22-46.jpg\" alt=\"\" width=\"604\" height=\"430\" class=\"aligncenter size-full wp-image-43754\" \/><\/a><\/p>\n<p>Also upload the latest virtual schema distribution from <a href=\"https:\/\/github.com\/exasol\/virtual-schemas\/releases\" target=\"_blank\" rel=\"noopener noreferrer\">here<\/a>, so it looks like this:<br \/>\n<a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-11-30-05.jpg\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-11-30-05.jpg\" alt=\"\" width=\"602\" height=\"424\" class=\"aligncenter size-full wp-image-43756\" \/><\/a><\/p>\n<p>Now we need to create the so-clalled &#8220;Adapter script&#8221;:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL_EXA&gt; CREATE SCHEMA ADAPTER;\nEXA: CREATE SCHEMA ADAPTER;\n\nRows affected: 0\n\nSQL_EXA&gt; CREATE OR REPLACE JAVA ADAPTER.JDBC_ADAPTER AS\n         %scriptclass com.exasol.adapter.RequestDispatcher;\n         %jar \/buckets\/bucketfs1\/drivers\/virtual-schema-dist-5.0.4-bundle-4.0.3.jar;\n         %jar \/buckets\/bucketfs1\/drivers\/postgresql-42.2.16.jar;\n\/\nEXA: CREATE OR REPLACE JAVA ADAPTER SCRIPT ADAPTER.JDBC_ADAPTER AS...\n\nRows affected: 0\n\nSQL_EXA&gt; \n<\/pre>\n<p>Finally we can create the virtual schema:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL_EXA&gt; CREATE VIRTUAL SCHEMA POSTGRESQL_REMOTE\n         USING ADAPTER.JDBC_ADAPTER \n         WITH\n         SQL_DIALECT = 'POSTGRESQL'\n         SCHEMA_NAME = 'public'\n         CONNECTION_NAME = 'JDBC_POSTGRESQL';\nEXA: CREATE VIRTUAL SCHEMA POSTGRESQL_REMOTE...\n\nRows affected: 0\n\n<\/pre>\n<p>Now, that the virtual schema is there, the tables on the PostgreSQL side are visible and can be queried:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\nSQL_EXA&gt; select table_name from exa_dba_tables where TABLE_SCHEMA = 'POSTGRESQL_REMOTE';\nEXA: select table_name from exa_dba_tables where TABLE_SCHEMA = 'POSTGRESQL...\n\nTABLE_NAME                                                                                                                      \n--------------------------------------------------------------------------------------------------------------------------------\nPGBENCH_ACCOUNTS                                                                                                                \nPGBENCH_BRANCHES                                                                                                                \nPGBENCH_HISTORY                                                                                                                 \nPGBENCH_TELLERS                                                                                                                 \n\n4 rows in resultset.\n\nSQL_EXA&gt; select count(*) from POSTGRESQL_REMOTE.PGBENCH_ACCOUNTS;\nEXA: select count(*) from POSTGRESQL_REMOTE.PGBENCH_ACCOUNTS;\n\nCOUNT(*)            \n--------------------\n            10000000\n\n1 row in resultset.\n<\/pre>\n<p>Compared to PostgreSQL it is bit more work to set this up, but once you are through the process the first time it not an issue anymore. In the next post we will load that data into Exasol and get into more details how Exasol works when it comes to transactions.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the first post of this series we brought up an Exasol test system to have something to play with. Because playing without data is a bit boring this post is about loading data from PostgreSQL to Exasol. We&#8217;ll use pgbench on the PostgreSQL side to generate some data and then load that into Exasol.<\/p>\n","protected":false},"author":29,"featured_media":14752,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198],"tags":[2127,77],"type_dbi":[],"class_list":["post-14751","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","category-database-management","tag-exasol","tag-postgresql"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Getting started with Exasol \u2013 Loading data from PostgreSQL - dbi Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getting started with Exasol \u2013 Loading data from PostgreSQL\" \/>\n<meta property=\"og:description\" content=\"In the first post of this series we brought up an Exasol test system to have something to play with. Because playing without data is a bit boring this post is about loading data from PostgreSQL to Exasol. We&#8217;ll use pgbench on the PostgreSQL side to generate some data and then load that into Exasol.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-09-30T09:08:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1215\" \/>\n\t<meta property=\"og:image:height\" content=\"540\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Daniel Westermann\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@westermanndanie\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Daniel Westermann\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Getting started with Exasol \u2013 Loading data from PostgreSQL\",\"datePublished\":\"2020-09-30T09:08:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/\"},\"wordCount\":542,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg\",\"keywords\":[\"Exasol\",\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/\",\"name\":\"Getting started with Exasol \u2013 Loading data from PostgreSQL - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg\",\"datePublished\":\"2020-09-30T09:08:27+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg\",\"width\":1215,\"height\":540},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting started with Exasol \u2013 Loading data from PostgreSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\",\"name\":\"Daniel Westermann\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g\",\"caption\":\"Daniel Westermann\"},\"description\":\"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.\",\"sameAs\":[\"https:\/\/x.com\/westermanndanie\"],\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Getting started with Exasol \u2013 Loading data from PostgreSQL - dbi 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:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"Getting started with Exasol \u2013 Loading data from PostgreSQL","og_description":"In the first post of this series we brought up an Exasol test system to have something to play with. Because playing without data is a bit boring this post is about loading data from PostgreSQL to Exasol. We&#8217;ll use pgbench on the PostgreSQL side to generate some data and then load that into Exasol.","og_url":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/","og_site_name":"dbi Blog","article_published_time":"2020-09-30T09:08:27+00:00","og_image":[{"width":1215,"height":540,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg","type":"image\/jpeg"}],"author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Getting started with Exasol \u2013 Loading data from PostgreSQL","datePublished":"2020-09-30T09:08:27+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/"},"wordCount":542,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg","keywords":["Exasol","PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring","Database management"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/","url":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/","name":"Getting started with Exasol \u2013 Loading data from PostgreSQL - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg","datePublished":"2020-09-30T09:08:27+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/Screenshot-at-09-33-16.jpg","width":1215,"height":540},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/getting-started-with-exasol-loading-data-from-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Getting started with Exasol \u2013 Loading data from PostgreSQL"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66","name":"Daniel Westermann","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/31350ceeecb1dd8986339a29bf040d4cd3cd087d410deccd8f55234466d6c317?s=96&d=mm&r=g","caption":"Daniel Westermann"},"description":"Daniel Westermann is Principal Consultant and Technology Leader Open Infrastructure at dbi services. He has more than 15 years of experience in management, engineering and optimization of databases and infrastructures, especially on Oracle and PostgreSQL. Since the beginning of his career, he has specialized in Oracle Technologies and is Oracle Certified Professional 12c and Oracle Certified Expert RAC\/GridInfra. Over time, Daniel has become increasingly interested in open source technologies, becoming \u201cTechnology Leader Open Infrastructure\u201d and PostgreSQL expert. \u00a0Based on community or EnterpriseDB tools, he develops and installs complex high available solutions with PostgreSQL. He is also a certified PostgreSQL Plus 9.0 Professional and a Postgres Advanced Server 9.4 Professional. He is a regular speaker at PostgreSQL conferences in Switzerland and Europe. Today Daniel is also supporting our customers on AWS services such as AWS RDS, database migrations into the cloud, EC2 and automated infrastructure management with AWS SSM (System Manager). He is a certified AWS Solutions Architect Professional. Prior to dbi services, Daniel was Management System Engineer at LC SYSTEMS-Engineering AG in Basel. Before that, he worked as Oracle Developper &amp;\u00a0Project Manager at Delta Energy Solutions AG in Basel (today Powel AG). Daniel holds a diploma in Business Informatics (DHBW, Germany). His branch-related experience mainly covers the pharma industry, the financial sector, energy, lottery and telecommunications.","sameAs":["https:\/\/x.com\/westermanndanie"],"url":"https:\/\/www.dbi-services.com\/blog\/author\/daniel-westermann\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14751","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/29"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=14751"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/14751\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/14752"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=14751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=14751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=14751"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=14751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}