{"id":11699,"date":"2018-09-13T15:01:25","date_gmt":"2018-09-13T13:01:25","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/"},"modified":"2018-09-13T15:01:25","modified_gmt":"2018-09-13T13:01:25","slug":"masking-data-with-postgresql","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/","title":{"rendered":"Masking Data With PostgreSQL"},"content":{"rendered":"<p><strong>By Mouhamadou Diaw<\/strong><\/p>\n<p>I was searching a tool for anonymizing data in a PostgreSQL database and I have tested the extension <a href=\"https:\/\/pgxn.org\/dist\/postgresql_anonymizer\/0.0.3\/\" target=\"_blank\" rel=\"noopener\">pg_anonymizer<\/a>.<br \/>\nPostgreSQL_anonymizer is a set of SQL functions that remove personally identifiable values from a PostgreSQL table and replace them with random-but-plausible values. The goal is to avoid any identification from the data record while remaining suitable for testing, data analysis and data processing.<br \/>\nIn this blog I am showing how this extension can be used. I am using a PostgreSQL 10 database.<br \/>\nThe first step is to install the extension pg_anonymizer. In my case I did it with with pgxn client<\/p>\n<div>\n<div id=\"highlighter_123309\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@pgserver2 ~]$ pgxn <\/code><code class=\"bash functions\">install<\/code> <code class=\"bash plain\">postgresql_anonymizer --pg_config <\/code><code class=\"bash plain\">\/u01\/app\/postgres\/product\/10\/db_1\/bin\/pg_config<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">INFO: best version: postgresql_anonymizer 0.0.3<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"bash plain\">INFO: saving <\/code><code class=\"bash plain\">\/tmp\/tmpVf3psT\/postgresql_anonymizer-0<\/code><code class=\"bash plain\">.0.3.zip<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">INFO: unpacking: <\/code><code class=\"bash plain\">\/tmp\/tmpVf3psT\/postgresql_anonymizer-0<\/code><code class=\"bash plain\">.0.3.zip<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">INFO: building extension<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">gmake: Nothing to be <\/code><code class=\"bash keyword\">done<\/code> <code class=\"bash keyword\">for<\/code> <code class=\"bash plain\">`all'.<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">INFO: installing extension<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">\/usr\/bin\/mkdir<\/code> <code class=\"bash plain\">-p <\/code><code class=\"bash string\">'\/u01\/app\/postgres\/product\/10\/db_1\/share\/extension'<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"bash plain\">\/usr\/bin\/mkdir<\/code> <code class=\"bash plain\">-p <\/code><code class=\"bash string\">'\/u01\/app\/postgres\/product\/10\/db_1\/share\/extension\/anon'<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"bash plain\">\/usr\/bin\/install<\/code> <code class=\"bash plain\">-c -m 644 .<\/code><code class=\"bash plain\">\/\/anon<\/code><code class=\"bash plain\">.control <\/code><code class=\"bash string\">'\/u01\/app\/postgres\/product\/10\/db_1\/share\/extension\/'<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"bash plain\">\/usr\/bin\/install<\/code> <code class=\"bash plain\">-c -m 644 .<\/code><code class=\"bash plain\">\/\/anon\/anon--0<\/code><code class=\"bash plain\">.0.3.sql\u00a0 <\/code><code class=\"bash string\">'\/u01\/app\/postgres\/product\/10\/db_1\/share\/extension\/anon\/'<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"bash plain\">[postgres@pgserver2 ~]$<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>We can then verify that under \/u01\/app\/postgres\/product\/10\/db_1\/share\/extension we have a file anon.control and a directory named anon<\/p>\n<div>\n<div id=\"highlighter_829422\" class=\"syntaxhighlighter  bash\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"bash plain\">[postgres@pgserver2 extension]$ <\/code><code class=\"bash functions\">ls<\/code> <code class=\"bash plain\">-ltra anon*<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"bash plain\">-rw-r--r--. 1 postgres postgres 167 Sep 13 10:54 anon.control<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"bash plain\">anon:<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"bash plain\">total 18552<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"bash plain\">drwxrwxr-x. 3 postgres postgres\u00a0\u00a0\u00a0 12288 Sep 13 10:54 ..<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"bash plain\">drwxrwxr-x. 2 postgres postgres\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 28 Sep 13 10:54 .<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"bash plain\">-rw-r--r--. 1 postgres postgres 18980156 Sep 13 10:54 anon--0.0.3.sql<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Let\u2019s create a database named prod and let\u2019s create the required extensions. tsm_system_rows should delivered by the contrib.<\/p>\n<div>\n<div id=\"highlighter_789492\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">prod=# c prod<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql plain\">You are now connected <\/code><code class=\"sql keyword\">to<\/code> <code class=\"sql keyword\">database<\/code> <code class=\"sql string\">\"prod\"<\/code> <code class=\"sql keyword\">as<\/code> <code class=\"sql color2\">user<\/code> <code class=\"sql string\">\"postgres\"<\/code><code class=\"sql plain\">.<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql plain\">prod=# <\/code><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql plain\">EXTENSION tsm_system_rows;;<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql plain\">EXTENSION<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql plain\">prod=# <\/code><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql plain\">EXTENSION anon;<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql plain\">EXTENSION<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql plain\">prod=# dx<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">List <\/code><code class=\"sql keyword\">of<\/code> <code class=\"sql plain\">installed extensions<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">Name<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">| Version |\u00a0\u00a0 <\/code><code class=\"sql keyword\">Schema<\/code>\u00a0\u00a0 <code class=\"sql plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Description<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql comments\">-----------------+---------+------------+----------------------------------------------------<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql comments\">--------<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 0.0.3\u00a0\u00a0 | anon\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Data anonymization tools<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">plpgsql\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | 1.0\u00a0\u00a0\u00a0\u00a0 | pg_catalog | PL\/pgSQL procedural language<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">tsm_system_rows | 1.0\u00a0\u00a0\u00a0\u00a0 | <\/code><code class=\"sql keyword\">public<\/code>\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">| TABLESAMPLE method which accepts number <\/code><code class=\"sql keyword\">of<\/code> <code class=\"sql keyword\">rows<\/code> <code class=\"sql keyword\">as<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql plain\">a limit<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"sql plain\">(3 <\/code><code class=\"sql keyword\">rows<\/code><code class=\"sql plain\">)<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>The extension will create following functions in the schema anon. These functions can be used to mask some data.<\/p>\n<div>\n<div id=\"highlighter_469347\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<div class=\"line number23 index22 alt2\">23<\/div>\n<div class=\"line number24 index23 alt1\">24<\/div>\n<div class=\"line number25 index24 alt2\">25<\/div>\n<div class=\"line number26 index25 alt1\">26<\/div>\n<div class=\"line number27 index26 alt2\">27<\/div>\n<div class=\"line number28 index27 alt1\">28<\/div>\n<div class=\"line number29 index28 alt2\">29<\/div>\n<div class=\"line number30 index29 alt1\">30<\/div>\n<div class=\"line number31 index30 alt2\">31<\/div>\n<div class=\"line number32 index31 alt1\">32<\/div>\n<div class=\"line number33 index32 alt2\">33<\/div>\n<div class=\"line number34 index33 alt1\">34<\/div>\n<div class=\"line number35 index34 alt2\">35<\/div>\n<div class=\"line number36 index35 alt1\">36<\/div>\n<div class=\"line number37 index36 alt2\">37<\/div>\n<div class=\"line number38 index37 alt1\">38<\/div>\n<div class=\"line number39 index38 alt2\">39<\/div>\n<div class=\"line number40 index39 alt1\">40<\/div>\n<div class=\"line number41 index40 alt2\">41<\/div>\n<div class=\"line number42 index41 alt1\">42<\/div>\n<div class=\"line number43 index42 alt2\">43<\/div>\n<div class=\"line number44 index43 alt1\">44<\/div>\n<div class=\"line number45 index44 alt2\">45<\/div>\n<div class=\"line number46 index45 alt1\">46<\/div>\n<div class=\"line number47 index46 alt2\">47<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">prod=# <\/code><code class=\"sql keyword\">set<\/code> <code class=\"sql plain\">search_path=anon;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql keyword\">SET<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql plain\">prod=# df<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">List <\/code><code class=\"sql keyword\">of<\/code> <code class=\"sql plain\">functions<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql keyword\">Schema<\/code> <code class=\"sql plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <\/code><code class=\"sql keyword\">Name<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">|\u00a0\u00a0\u00a0\u00a0 Result data type\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Argu<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql plain\">ment data types\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0 Type<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql comments\">--------+--------------------------+--------------------------+------------------------------<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql comments\">------------------------------------------+--------<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_city\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_city_in_country\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | country_name text<\/code><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_company\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_country\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_date\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | <\/code><code class=\"sql keyword\">timestamp<\/code> <code class=\"sql keyword\">with<\/code> <code class=\"sql keyword\">time<\/code> <code class=\"sql plain\">zone |<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_date_between\u00a0\u00a0\u00a0\u00a0\u00a0 | <\/code><code class=\"sql keyword\">timestamp<\/code> <code class=\"sql keyword\">with<\/code> <code class=\"sql keyword\">time<\/code> <code class=\"sql plain\">zone | date_start <\/code><code class=\"sql keyword\">timestamp<\/code> <code class=\"sql keyword\">with<\/code> <code class=\"sql plain\">tim<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql plain\">e zone, date_end <\/code><code class=\"sql keyword\">timestamp<\/code> <code class=\"sql keyword\">with<\/code> <code class=\"sql keyword\">time<\/code> <code class=\"sql plain\">zone | normal<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_email\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number23 index22 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_first_name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number24 index23 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number25 index24 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_iban\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number26 index25 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number27 index26 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_int_between\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | <\/code><code class=\"sql keyword\">integer<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">| int_start <\/code><code class=\"sql keyword\">integer<\/code><code class=\"sql plain\">, int_stop <\/code><code class=\"sql keyword\">integer<\/code><\/div>\n<div class=\"line number28 index27 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number29 index28 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_last_name\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number30 index29 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number31 index30 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_phone\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | phone_prefix text <\/code><code class=\"sql keyword\">DEFAULT<\/code> <code class=\"sql string\">'0'<\/code><code class=\"sql plain\">::text<\/code><\/div>\n<div class=\"line number32 index31 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number33 index32 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_region\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number34 index33 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number35 index34 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_region_in_country | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | country_name text<\/code><\/div>\n<div class=\"line number36 index35 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number37 index36 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_siren\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number38 index37 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number39 index38 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_siret\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number40 index39 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number41 index40 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_string\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | l <\/code><code class=\"sql keyword\">integer<\/code><\/div>\n<div class=\"line number42 index41 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number43 index42 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">anon\u00a0\u00a0 | random_zip\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | text\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number44 index43 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql plain\">| normal<\/code><\/div>\n<div class=\"line number45 index44 alt2\"><code class=\"sql plain\">(18 <\/code><code class=\"sql keyword\">rows<\/code><code class=\"sql plain\">)<\/code><\/div>\n<div class=\"line number46 index45 alt1\"><\/div>\n<div class=\"line number47 index46 alt2\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Now in the database prod let\u2019s create a table with some data.<\/p>\n<div>\n<div id=\"highlighter_687227\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<div class=\"line number10 index9 alt1\">10<\/div>\n<div class=\"line number11 index10 alt2\">11<\/div>\n<div class=\"line number12 index11 alt1\">12<\/div>\n<div class=\"line number13 index12 alt2\">13<\/div>\n<div class=\"line number14 index13 alt1\">14<\/div>\n<div class=\"line number15 index14 alt2\">15<\/div>\n<div class=\"line number16 index15 alt1\">16<\/div>\n<div class=\"line number17 index16 alt2\">17<\/div>\n<div class=\"line number18 index17 alt1\">18<\/div>\n<div class=\"line number19 index18 alt2\">19<\/div>\n<div class=\"line number20 index19 alt1\">20<\/div>\n<div class=\"line number21 index20 alt2\">21<\/div>\n<div class=\"line number22 index21 alt1\">22<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">prod=# d customers<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">Table<\/code> <code class=\"sql string\">\"public.customers\"<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql spaces\">\u00a0\u00a0\u00a0<\/code><code class=\"sql keyword\">Column<\/code>\u00a0\u00a0 <code class=\"sql plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 Type\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Collation | Nullable | <\/code><code class=\"sql keyword\">Default<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql comments\">------------+-----------------------+-----------+----------+---------<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">first_name | <\/code><code class=\"sql keyword\">character<\/code> <code class=\"sql keyword\">varying<\/code><code class=\"sql plain\">(30) |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">last_name\u00a0 | <\/code><code class=\"sql keyword\">character<\/code> <code class=\"sql keyword\">varying<\/code><code class=\"sql plain\">(30) |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">email_add\u00a0 | <\/code><code class=\"sql keyword\">character<\/code> <code class=\"sql keyword\">varying<\/code><code class=\"sql plain\">(30) |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">country\u00a0\u00a0\u00a0 | <\/code><code class=\"sql keyword\">character<\/code> <code class=\"sql keyword\">varying<\/code><code class=\"sql plain\">(60) |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">iban\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | <\/code><code class=\"sql keyword\">character<\/code> <code class=\"sql keyword\">varying<\/code><code class=\"sql plain\">(60) |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number10 index9 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">amount\u00a0\u00a0\u00a0\u00a0 | <\/code><code class=\"sql keyword\">integer<\/code>\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 <code class=\"sql plain\">|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<\/code><\/div>\n<div class=\"line number11 index10 alt2\"><\/div>\n<div class=\"line number12 index11 alt1\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<div class=\"line number13 index12 alt2\"><\/div>\n<div class=\"line number14 index13 alt1\"><code class=\"sql plain\">prod=# <\/code><code class=\"sql keyword\">table<\/code> <code class=\"sql plain\">customers;<\/code><\/div>\n<div class=\"line number15 index14 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">first_name | last_name |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 email_add\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0 country\u00a0\u00a0\u00a0 |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iban\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0 amount<\/code><\/div>\n<div class=\"line number16 index15 alt1\"><code class=\"sql comments\">------------+-----------+-------------------------+--------------+----------------------------+------------<\/code><\/div>\n<div class=\"line number17 index16 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">Michel\u00a0\u00a0\u00a0\u00a0 | Delco\u00a0\u00a0\u00a0\u00a0 | michel.delco@yaaa.fr\u00a0\u00a0\u00a0 | FRANCE\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | FR763000600001123456890189 |\u00a0\u00a0\u00a0 5000000<\/code><\/div>\n<div class=\"line number18 index17 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">Denise\u00a0\u00a0\u00a0\u00a0 | Blanchot\u00a0 | denise.blanchot@yaaa.de | GERMANY\u00a0\u00a0\u00a0\u00a0\u00a0 | DE91100000000123456789\u00a0\u00a0\u00a0\u00a0 | 1000000000<\/code><\/div>\n<div class=\"line number19 index18 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">Farid\u00a0\u00a0\u00a0\u00a0\u00a0 | Dim\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | farid.dim@yaaa.sa\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Saudi Arabia | SA4420000001234567891234\u00a0\u00a0 |\u00a0\u00a0\u00a0 2500000<\/code><\/div>\n<div class=\"line number20 index19 alt1\"><code class=\"sql plain\">(3 <\/code><code class=\"sql keyword\">rows<\/code><code class=\"sql plain\">)<\/code><\/div>\n<div class=\"line number21 index20 alt2\"><\/div>\n<div class=\"line number22 index21 alt1\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Let\u2019s say that I want some people to access to all data for this table, but I don\u2019t want them to see the real email, the real country and the real iban of the customers.<br \/>\nOne solution should be to create a view with anonymous data for these columns. This will replace them with random-but-plausible values for these columns<\/p>\n<div>\n<div id=\"highlighter_241328\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">prod=# <\/code><code class=\"sql keyword\">create<\/code> <code class=\"sql keyword\">view<\/code> <code class=\"sql plain\">Customers_anon <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">first_name <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql plain\">Firstname ,last_name\u00a0 <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql plain\">Lastnmame,anon.random_email() <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql plain\">Email ,anon.random_country() <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql plain\">Country, anon.random_iban() <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql plain\">Iban ,amount <\/code><code class=\"sql keyword\">as<\/code> <code class=\"sql plain\">Amount <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">customers;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql keyword\">CREATE<\/code> <code class=\"sql keyword\">VIEW<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>And then grant the access privilege to concerned people<\/p>\n<div>\n<div id=\"highlighter_359947\" class=\"syntaxhighlighter  sql\">\n<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">\n<tbody>\n<tr>\n<td class=\"gutter\">\n<div class=\"line number1 index0 alt2\">1<\/div>\n<div class=\"line number2 index1 alt1\">2<\/div>\n<div class=\"line number3 index2 alt2\">3<\/div>\n<div class=\"line number4 index3 alt1\">4<\/div>\n<div class=\"line number5 index4 alt2\">5<\/div>\n<div class=\"line number6 index5 alt1\">6<\/div>\n<div class=\"line number7 index6 alt2\">7<\/div>\n<div class=\"line number8 index7 alt1\">8<\/div>\n<div class=\"line number9 index8 alt2\">9<\/div>\n<\/td>\n<td class=\"code\">\n<div class=\"container\">\n<div class=\"line number1 index0 alt2\"><code class=\"sql plain\">prod=# <\/code><code class=\"sql keyword\">select<\/code> <code class=\"sql plain\">* <\/code><code class=\"sql keyword\">from<\/code> <code class=\"sql plain\">customers_anon ;<\/code><\/div>\n<div class=\"line number2 index1 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">firstname | lastnmame |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 email\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | country |\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 iban\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |\u00a0\u00a0 amount<\/code><\/div>\n<div class=\"line number3 index2 alt2\"><code class=\"sql comments\">-----------+-----------+-------------------------------+---------+----------------------------+------------<\/code><\/div>\n<div class=\"line number4 index3 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">Michel\u00a0\u00a0\u00a0 | Delco\u00a0\u00a0\u00a0\u00a0 | wlothean0@springer.com\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Spain\u00a0\u00a0 |\u00a0 AD1111112222C3C3C3C3C3C3\u00a0 |\u00a0\u00a0\u00a0 5000000<\/code><\/div>\n<div class=\"line number5 index4 alt2\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">Denise\u00a0\u00a0\u00a0 | Blanchot\u00a0 | emoraloy@dropbox.com\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | Myanmar |\u00a0 AD1111112222C3C3C3C3C3C3\u00a0 | 1000000000<\/code><\/div>\n<div class=\"line number6 index5 alt1\"><code class=\"sql spaces\">\u00a0<\/code><code class=\"sql plain\">Farid\u00a0\u00a0\u00a0\u00a0 | Dim\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 | vbritlandkt@deliciousdays.com | India\u00a0\u00a0 |\u00a0 AD1111112222C3C3C3C3C3C3\u00a0 |\u00a0\u00a0\u00a0 2500000<\/code><\/div>\n<div class=\"line number7 index6 alt2\"><code class=\"sql plain\">(3 <\/code><code class=\"sql keyword\">rows<\/code><code class=\"sql plain\">)<\/code><\/div>\n<div class=\"line number8 index7 alt1\"><\/div>\n<div class=\"line number9 index8 alt2\"><code class=\"sql plain\">prod=#<\/code><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p>Thanks to Damien for this project. Just not that this project is in its early development and should be used with care (see Damien comment below).<\/p>\n","protected":false},"excerpt":{"rendered":"<p>By Mouhamadou Diaw I was searching a tool for anonymizing data in a PostgreSQL database and I have tested the extension pg_anonymizer. PostgreSQL_anonymizer is a set of SQL functions that remove personally identifiable values from a PostgreSQL table and replace them with random-but-plausible values. The goal is to avoid any identification from the data record&hellip;&nbsp;<\/p>\n","protected":false},"author":27,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"neve_meta_sidebar":"","neve_meta_container":"","neve_meta_enable_content_width":"","neve_meta_content_width":0,"neve_meta_title_alignment":"","neve_meta_author_avatar":"","neve_post_elements_order":"","neve_meta_disable_header":"","neve_meta_disable_footer":"","neve_meta_disable_title":"","neve_meta_reading_time":"","_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[83],"tags":[],"class_list":["post-11699","post","type-post","status-publish","format-standard","hentry","category-postgresql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.4 (Yoast SEO v28.7) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Masking Data With PostgreSQL - dbi services | Blog<\/title>\n<meta name=\"description\" content=\"PostgreSQL, data masking, pg_anonymizer,security\" \/>\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\/masking-data-with-postgresql\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Masking Data With PostgreSQL\" \/>\n<meta property=\"og:description\" content=\"PostgreSQL, data masking, pg_anonymizer,security\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi services | Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/dbiservices\/\" \/>\n<meta property=\"article:published_time\" content=\"2018-09-13T13:01:25+00:00\" \/>\n<meta name=\"author\" content=\"Oracle Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:site\" content=\"@dbiservices\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oracle Team\" \/>\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\\\/masking-data-with-postgresql\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/\"},\"author\":{\"name\":\"Oracle Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bf7c7eb0bec165183207237c9d0ee1d5\"},\"headline\":\"Masking Data With PostgreSQL\",\"datePublished\":\"2018-09-13T13:01:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/\"},\"wordCount\":283,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"articleSection\":[\"PostgreSQL\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/\",\"name\":\"Masking Data With PostgreSQL - dbi services | Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2018-09-13T13:01:25+00:00\",\"description\":\"PostgreSQL, data masking, pg_anonymizer,security\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/masking-data-with-postgresql\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Masking Data With PostgreSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi services Blog\",\"description\":\"#BeSharing\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\"},\"alternateName\":\"dbi Blog\",\"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\":\"Organization\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#organization\",\"name\":\"dbi services\",\"alternateName\":\"dbi\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/dbi-services-logo.png\",\"width\":512,\"height\":512,\"caption\":\"dbi services\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/dbiservices\\\/\",\"https:\\\/\\\/x.com\\\/dbiservices\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/dbi-services\\\/\",\"https:\\\/\\\/www.youtube.com\\\/user\\\/dbiservices\"],\"description\":\"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.\",\"email\":\"info@dbi-services.com\",\"telephone\":\"+41 32 422 96 00\",\"legalName\":\"dbi services SA\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bf7c7eb0bec165183207237c9d0ee1d5\",\"name\":\"Oracle Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/oracle-square.png\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/oracle-square.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/2022\\\/12\\\/oracle-square.png\",\"caption\":\"Oracle Team\"},\"description\":\"Posts published under the Oracle Team account are collective contributions by the dbi services Oracle consultants. The practice covers the full Oracle Database lifecycle: architecture, migration and upgrade, high availability with RAC and Data Guard, backup and recovery, performance tuning, and engineered systems such as Oracle Database Appliance and Exadata. The team holds Oracle certifications up to Certified Master level and operates customer platforms under service level agreements.\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/oracle-team\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Masking Data With PostgreSQL - dbi services | Blog","description":"PostgreSQL, data masking, pg_anonymizer,security","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\/masking-data-with-postgresql\/","og_locale":"en_US","og_type":"article","og_title":"Masking Data With PostgreSQL","og_description":"PostgreSQL, data masking, pg_anonymizer,security","og_url":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/","og_site_name":"dbi services | Blog","article_publisher":"https:\/\/www.facebook.com\/dbiservices\/","article_published_time":"2018-09-13T13:01:25+00:00","author":"Oracle Team","twitter_card":"summary_large_image","twitter_creator":"@dbiservices","twitter_site":"@dbiservices","twitter_misc":{"Written by":"Oracle Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/"},"author":{"name":"Oracle Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bf7c7eb0bec165183207237c9d0ee1d5"},"headline":"Masking Data With PostgreSQL","datePublished":"2018-09-13T13:01:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/"},"wordCount":283,"commentCount":0,"publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"articleSection":["PostgreSQL"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/","url":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/","name":"Masking Data With PostgreSQL - dbi services | Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2018-09-13T13:01:25+00:00","description":"PostgreSQL, data masking, pg_anonymizer,security","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/masking-data-with-postgresql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Masking Data With PostgreSQL"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi services Blog","description":"#BeSharing","publisher":{"@id":"https:\/\/www.dbi-services.com\/blog\/#organization"},"alternateName":"dbi Blog","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":"Organization","@id":"https:\/\/www.dbi-services.com\/blog\/#organization","name":"dbi services","alternateName":"dbi","url":"https:\/\/www.dbi-services.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2026\/09\/dbi-services-logo.png","width":512,"height":512,"caption":"dbi services"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/dbiservices\/","https:\/\/x.com\/dbiservices","https:\/\/www.linkedin.com\/company\/dbi-services\/","https:\/\/www.youtube.com\/user\/dbiservices"],"description":"Swiss IT consulting and services company specialised in efficient data infrastructures and platforms: databases, application servers, cloud, DevOps, digitalization, analytics, data quality and monitoring. Headquartered in Del\u00e9mont with offices in Nyon, Basel, Bern and Zurich.","email":"info@dbi-services.com","telephone":"+41 32 422 96 00","legalName":"dbi services SA"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bf7c7eb0bec165183207237c9d0ee1d5","name":"Oracle Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/12\/oracle-square.png","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/12\/oracle-square.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/2022\/12\/oracle-square.png","caption":"Oracle Team"},"description":"Posts published under the Oracle Team account are collective contributions by the dbi services Oracle consultants. The practice covers the full Oracle Database lifecycle: architecture, migration and upgrade, high availability with RAC and Data Guard, backup and recovery, performance tuning, and engineered systems such as Oracle Database Appliance and Exadata. The team holds Oracle certifications up to Certified Master level and operates customer platforms under service level agreements.","url":"https:\/\/www.dbi-services.com\/blog\/author\/oracle-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11699","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\/27"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=11699"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11699\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11699"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11699"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11699"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}