{"id":9748,"date":"2017-02-01T12:47:47","date_gmt":"2017-02-01T11:47:47","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/"},"modified":"2017-02-01T12:47:47","modified_gmt":"2017-02-01T11:47:47","slug":"can-i-do-it-with-postgresql-9-temporary-tables","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/","title":{"rendered":"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables"},"content":{"rendered":"<p>It has been quite a while since the last posts in this series, so here is what we looked at until now:<\/p>\n<ul>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-1-restore-points\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 1 \u2013 Restore points<\/a><\/li>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-2-dual\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 2 \u2013 Dual<\/a><\/li>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-3-tablespaces\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 3 \u2013 Tablespaces<\/a><\/li>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-4-external-tables\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 4 \u2013 External tables<\/a><\/li>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-5-generating-ddl-commands\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 5 \u2013 Generating DDL commands<\/a><\/li>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-6-server-programming\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 6 \u2013 Server programming<\/a><\/li>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-7-partitioning\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 7 \u2013 Partitioning<\/a><\/li>\n<li><a href=\"http:\/\/dbi-services.com\/blog\/can-i-do-it-with-postgresql-8-transportable-tablespaces\/\" target=\"_blank\" rel=\"noopener\">Can I do it with PostgreSQL? \u2013 8 \u2013 Transportable tablespaces<\/a><\/li>\n<\/ul>\n<p>In this post we&#8217;ll look at temporary tables. Temporary tables hold data for the scope of a session or a transaction and the data is lost afterwards, so what are they good for then? Usually you will use them to store intermediate results that you need for further processing without the need to permanently store these. A typical use case is a business report that requires some intermediate aggregations. Can we do this in PostgreSQL? Yes, of course. Lets go. <\/p>\n<p><!--more--><\/p>\n<p>When we look at the create table syntax the keywords TEMP or TEMPORARY are there:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; h create table\nCommand:     CREATE TABLE\nDescription: define a new table\nSyntax:\nCREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [\n  { column_name data_type [ COLLATE collation ] [ column_constraint [ ... ] ]\n    | table_constraint\n    | LIKE source_table [ like_option ... ] }\n    [, ... ]\n] )\n[ INHERITS ( parent_table [, ... ] ) ]\n[ WITH ( storage_parameter [= value] [, ... ] ) | WITH OIDS | WITHOUT OIDS ]\n[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]\n[ TABLESPACE tablespace_name ]\n<\/pre>\n<p>Then we should be able to create a temporay table, shouldn&#8217;t we?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; create temporary table tmp1 ( a int, b varchar(10));\nCREATE TABLE\n(postgres@[local]:5439) [postgres] &gt; d tmp1\n           Table \"pg_temp_2.tmp1\"\n Column |         Type          | Modifiers \n--------+-----------------------+-----------\n a      | integer               | \n b      | character varying(10) | \n<\/pre>\n<p>Easy. Have you looked at the schema it got created in? What is pg_temp_2? I do not have schema that is named pg_temp_2:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; dn\n  List of schemas\n  Name  |  Owner   \n--------+----------\n public | postgres\n(1 row)\n<\/pre>\n<p>Temporay tables get created in a special schema. You can see it if you query <a href=\"https:\/\/www.postgresql.org\/docs\/current\/static\/catalog-pg-namespace.html\" target=\"_blank\" rel=\"noopener\">pg_namespace<\/a> directly:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; select nspname from pg_namespace where nspname = 'pg_temp_2';\n  nspname  \n-----------\n pg_temp_2\n(1 row)\n<\/pre>\n<p>Important to know: When you exit from your session the temporary table is gone:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; d tmp1\n           Table \"pg_temp_2.tmp1\"\n Column |         Type          | Modifiers \n--------+-----------------------+-----------\n a      | integer               | \n b      | character varying(10) | \n\n(postgres@[local]:5439) [postgres] &gt; q\npostgres@pgbox:\/home\/postgres\/ [PG961] psql postgres\npsql (9.6.1 dbi services build)\nType \"help\" for help.\n\n(postgres@[local]:5439) [postgres] &gt; d tmp1\nDid not find any relation named \"tmp1\".\n<\/pre>\n<p>What about the visibiliy of the data in a temporary table? It depends on how you create the table. When you want the data<br \/>\nto be visible for the entire lifetime of the session you do it like above:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; create temporary table tmp1 ( a int, b varchar(10));\nCREATE TABLE\n(postgres@[local]:5439) [postgres] &gt; insert into tmp1 values (1,'1');\nINSERT 0 1\n(postgres@[local]:5439) [postgres] &gt; select * from tmp1;\n a | b \n---+---\n 1 | 1\n(1 row)\n<\/pre>\n<p>When you want the data to be visible only for the duration of the current transaction you do it like this:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; create temporary table tmp2 ( a int, b varchar(10)) on commit delete rows;\nCREATE TABLE\n(postgres@[local]:5439) [postgres] &gt; begin;\nBEGIN\n(postgres@[local]:5439) [postgres] &gt; insert into tmp2 values (1,'1');\nINSERT 0 1\n(postgres@[local]:5439) [postgres] &gt; end;\nCOMMIT\n(postgres@[local]:5439) [postgres] &gt; select count(*) from tmp2;\n count \n-------\n     0\n(1 row)\n<\/pre>\n<p>Another important point to know: When you create a temporary table with the same name as an existing table you will not see<br \/>\nthe existing table anymore unless you prefix the normal table with the schema name:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; create table tmp3 ( a int );\nCREATE TABLE\n(postgres@[local]:5439) [postgres] &gt; create temporary table tmp3 ( a int, b varchar(10));\nCREATE TABLE\n(postgres@[local]:5439) [postgres] &gt; d tmp3\n           Table \"pg_temp_2.tmp3\"\n Column |         Type          | Modifiers \n--------+-----------------------+-----------\n a      | integer               | \n b      | character varying(10) | \n\n(postgres@[local]:5439) [postgres] &gt; d public.tmp3\n     Table \"public.tmp3\"\n Column |  Type   | Modifiers \n--------+---------+-----------\n a      | integer | \n<\/pre>\n<p>Be careful with this. What about performance? Is a temporary table faster to insert than a normal table?<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; create table tmp1 ( a int, b varchar(10) );\nCREATE TABLE\n(postgres@[local]:5439) [postgres] &gt; create temporary table tmp2 ( a int, b varchar(10) );\nCREATE TABLE\n<\/pre>\n<p>This is the script:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; ! cat a.sql\ntruncate tmp1;\ntruncate tmp2;\nwith aa as\n( select generate_series ( 1, 1000000 ) a  )\ninsert into tmp1 (a,b)\n       select a, a\n         from aa;\n\nwith aa as\n( select generate_series ( 1, 1000000 ) a  )\ninsert into tmp2 (a,b)\n       select a, a\n         from aa;\n<\/pre>\n<p>This is the result:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; i a.sql\nTRUNCATE TABLE\nTime: 19.626 ms\nTRUNCATE TABLE\nTime: 35.665 ms\nINSERT 0 1000000\nTime: 7777.034 ms\nINSERT 0 1000000\nTime: 3327.984 ms\n(postgres@[local]:5439) [postgres] &gt; i a.sql\nTRUNCATE TABLE\nTime: 46.221 ms\nTRUNCATE TABLE\nTime: 33.286 ms\nINSERT 0 1000000\nTime: 7425.957 ms\nINSERT 0 1000000\nTime: 3241.140 ms\n(postgres@[local]:5439) [postgres] &gt; i a.sql\nTRUNCATE TABLE\nTime: 44.365 ms\nTRUNCATE TABLE\nTime: 35.992 ms\nINSERT 0 1000000\nTime: 8732.566 ms\nINSERT 0 1000000\nTime: 3888.795 ms\n<\/pre>\n<p>The temporary table is almost double as fast to write to than the normal table. Of course you can create indexes on temporary tables as well:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; create temporary table tmp4 ( a int, b varchar );\nCREATE TABLE\n(postgres@[local]:5439) [postgres] &gt; create index tmpi1 on tmp4(a);\nCREATE INDEX\n<\/pre>\n<p>.. and of course the index is gone as well once you end your session. <\/p>\n<p>Another point to remember: Temporary tables are not visible to the <a href=\"https:\/\/www.postgresql.org\/docs\/9.6\/static\/routine-vacuuming.html#AUTOVACUUM\" target=\"_blank\" rel=\"noopener\">vacuum deamon<\/a>. You might think this is not a problem as they disappear anyway but remember that autovacuum is responsible for gathering the statistics (kicking off analyze) as well.<br \/>\nDepending on what you want to do with the data you loaded into the temporary table it might be wise to issue a manual analyze on it:<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">\n(postgres@[local]:5439) [postgres] &gt; analyze verbose tmp4;\n<\/pre>\n<p>I hope I do not need to say that tempoary tables are not crash safe \ud83d\ude42 Have fun &#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It has been quite a while since the last posts in this series, so here is what we looked at until now: Can I do it with PostgreSQL? \u2013 1 \u2013 Restore points Can I do it with PostgreSQL? \u2013 2 \u2013 Dual Can I do it with PostgreSQL? \u2013 3 \u2013 Tablespaces Can I [&hellip;]<\/p>\n","protected":false},"author":29,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[77],"type_dbi":[],"class_list":["post-9748","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","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>Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables - 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\/can-i-do-it-with-postgresql-9-temporary-tables\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables\" \/>\n<meta property=\"og:description\" content=\"It has been quite a while since the last posts in this series, so here is what we looked at until now: Can I do it with PostgreSQL? \u2013 1 \u2013 Restore points Can I do it with PostgreSQL? \u2013 2 \u2013 Dual Can I do it with PostgreSQL? \u2013 3 \u2013 Tablespaces Can I [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-01T11:47:47+00:00\" \/>\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=\"5 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\/can-i-do-it-with-postgresql-9-temporary-tables\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/\"},\"author\":{\"name\":\"Daniel Westermann\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"headline\":\"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables\",\"datePublished\":\"2017-02-01T11:47:47+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/\"},\"wordCount\":505,\"commentCount\":0,\"keywords\":[\"PostgreSQL\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/\",\"name\":\"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"datePublished\":\"2017-02-01T11:47:47+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables\"}]},{\"@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":"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables - 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\/can-i-do-it-with-postgresql-9-temporary-tables\/","og_locale":"en_US","og_type":"article","og_title":"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables","og_description":"It has been quite a while since the last posts in this series, so here is what we looked at until now: Can I do it with PostgreSQL? \u2013 1 \u2013 Restore points Can I do it with PostgreSQL? \u2013 2 \u2013 Dual Can I do it with PostgreSQL? \u2013 3 \u2013 Tablespaces Can I [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/","og_site_name":"dbi Blog","article_published_time":"2017-02-01T11:47:47+00:00","author":"Daniel Westermann","twitter_card":"summary_large_image","twitter_creator":"@westermanndanie","twitter_misc":{"Written by":"Daniel Westermann","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/"},"author":{"name":"Daniel Westermann","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"headline":"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables","datePublished":"2017-02-01T11:47:47+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/"},"wordCount":505,"commentCount":0,"keywords":["PostgreSQL"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/","url":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/","name":"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2017-02-01T11:47:47+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/8d08e9bd996a89bd75c0286cbabf3c66"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/can-i-do-it-with-postgresql-9-temporary-tables\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Can I do it with PostgreSQL? \u2013 9 \u2013 Temporary tables"}]},{"@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\/9748","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=9748"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9748\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9748"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9748"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9748"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9748"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}