{"id":47671,"date":"2026-10-08T08:20:00","date_gmt":"2026-10-08T06:20:00","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=47671"},"modified":"2026-10-05T07:28:07","modified_gmt":"2026-10-05T05:28:07","slug":"goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/","title":{"rendered":"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">In my blog about the new <a href=\"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-automatic-schema-evolution-creating-missing-tables-during-an-initial-load\/\" target=\"_blank\" rel=\"noopener noreferrer\">automatic schema evolution<\/a> feature in GoldenGate 26ai, I was replicating the following table from Oracle to PostgreSQL:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>CREATE TABLE autosch.t1 (\n    id NUMBER PRIMARY KEY,\n    name VARCHAR2(50),\n    amount NUMBER(10,2),\n    created DATE DEFAULT SYSDATE,\n    note VARCHAR2(20) DEFAULT 'added'\n);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The replicat created a PostgreSQL table from an Oracle one during an initial load. It worked, but one choice was not mine: the <code>NUMBER<\/code> primary key became a <code>varchar(50)<\/code>. <strong>Automatic Schema Evolution<\/strong> takes its datatypes from a <strong>default mapping<\/strong>, and the <code>TYPEMAP<\/code> option is how you override it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Automatic schema evolution is a <strong>preview feature<\/strong> in GoldenGate 26ai: its syntax, messages and behavior can change before it becomes generally available, so the results below apply to the 23.26.3 release I tested.<\/p>\n\n\n\n<h2 id=\"where-the-default-mapping-comes-from\" class=\"wp-block-heading\">Where the default mapping comes from<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Each GoldenGate 26ai home ships the default mappings as one JSON file per source database and per target database. They are in <code>$OGG_HOME\/lib\/utl\/autoschema\/MappingJSON<\/code>, where <code>MappingGenerator.py<\/code> combines a source and a target file. For this example, the files are <code>AutoSchemaOracleSourceMappings.json<\/code> and <code>AutoSchemaPostgreSQLTargetMappings.json<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reading the two JSON files for an Oracle source and a PostgreSQL target, the default mappings that matter for the example table are:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Oracle source type<\/th><th>PostgreSQL target type<\/th><\/tr><\/thead><tbody><tr><td><code>number(precision,scale)<\/code><\/td><td><code>decimal(precision,scale)<\/code><\/td><\/tr><tr><td><code>number<\/code><\/td><td><code>varchar(precision)<\/code>, if the source data length is at most 10485760<\/td><\/tr><tr><td><code>number<\/code><\/td><td><code>text<\/code>, if the value is still too large to be accommodated<\/td><\/tr><tr><td><code>date<\/code><\/td><td><code>timestamp(precision)<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">A <code>NUMBER<\/code> <strong>without<\/strong> precision maps to <code>varchar<\/code>, and a <code>NUMBER(p,s)<\/code> maps to <code>decimal(p,s)<\/code>. This is why the key of my source table did not become a number.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For each test below, I drop <code>autosch.t1<\/code> on PostgreSQL and start a new replicat, always named <code>REPTM<\/code>, on the same file.<\/p>\n\n\n\n<h2 id=\"overriding-one-type\" class=\"wp-block-heading\">Overriding one type<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>AUTOSCHEMAOPTIONS TYPEMAP<\/code> must be written on a separate line, next to <code>DDL AUTOSCHEMA INCLUDE ALL<\/code>. The source type and the target type are separated by an <strong>equal sign<\/strong>. The option maps every occurrence of the source type to the given target type. <strong>Both types must be enclosed in single quotes<\/strong>, otherwise the replicat abends with <code>OGG-30694<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>REPLICAT REPTM\nTARGETDB ogg_pg_01 USERIDALIAS pgalias DOMAIN OracleGoldenGate\nDDL AUTOSCHEMA INCLUDE ALL\nAUTOSCHEMAOPTIONS TYPEMAP 'number' = 'bigint'\nMAP AUTOSCH.*, TARGET AUTOSCH.*;<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The replicat report logs that the override was read:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2026-09-19T15:23:47.078+0000  INFO    OGG-30632  Oracle GoldenGate Delivery for PostgreSQL, REPTM.prm:  AutoSchemaOptions TypeMap is used, TypeNameMap: number -&gt; bigint.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The table created in PostgreSQL, seen with <code>\\d autosch.t1<\/code> in <code>psql<\/code>, now shows a <em><code>bigint<\/code> as primary key<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ogg_test_pg=# \\d autosch.t1\n                            Table \"autosch.t1\"\n Column  |              Type              | Collation | Nullable | Default\n---------+--------------------------------+-----------+----------+---------\n id      | bigint                         |           | not null |\n name    | character varying(50)          |           |          |\n amount  | numeric(10,2)                  |           |          |\n created | timestamp(0) without time zone |           |          |\n note    | character varying(20)          |           |          |\nIndexes:\n    \"t1_pkey\" PRIMARY KEY, btree (id)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The <code>amount<\/code> column type did not change, since <code>'number'<\/code> matches the source type <code>NUMBER<\/code> without precision. <code>NUMBER(10,2)<\/code> is another source type, and is not affected by the <code>TYPEMAP<\/code> instruction.<\/p>\n\n\n\n<h2 id=\"mapping-several-types-with-autoschemaoptions\" class=\"wp-block-heading\">Mapping several types with <code>AUTOSCHEMAOPTIONS<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">When mapping multiple types, each mapping needs a dedicated <code>AUTOSCHEMAOPTIONS<\/code> line:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>DDL AUTOSCHEMA INCLUDE ALL\nAUTOSCHEMAOPTIONS TYPEMAP 'number' = 'bigint'\nAUTOSCHEMAOPTIONS TYPEMAP 'date' = 'date'\nAUTOSCHEMAOPTIONS TYPEMAP 'number(10,2)' = 'real'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Every entry is logged separately:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2026-09-19T16:29:07.403+0000  INFO    OGG-30632  Oracle GoldenGate Delivery for PostgreSQL, REPTM.prm:  AutoSchemaOptions TypeMap is used, TypeNameMap: date -&gt; date.\n2026-09-19T16:29:07.403+0000  INFO    OGG-30632  Oracle GoldenGate Delivery for PostgreSQL, REPTM.prm:  AutoSchemaOptions TypeMap is used, TypeNameMap: number -&gt; bigint.\n2026-09-19T16:29:07.403+0000  INFO    OGG-30632  Oracle GoldenGate Delivery for PostgreSQL, REPTM.prm:  AutoSchemaOptions TypeMap is used, TypeNameMap: number\\(10,2\\) -&gt; real.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And this is the resulting table:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> Column  |         Type          | Collation | Nullable | Default\n---------+-----------------------+-----------+----------+---------\n id      | bigint                |           | not null |\n name    | character varying(50) |           |          |\n amount  | real                  |           |          |\n created | date                  |           |          |\n note    | character varying(20) |           |          |<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">All three overrides are applied. An interesting feature is that the replicat logs an <code>OGG-03056<\/code> warning about the target column being smaller than the source column:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>2026-09-19T16:29:07.419+0000  WARNING OGG-03056  Oracle GoldenGate Delivery for PostgreSQL, REPTM.prm:  Source table AUTOSCH.T1 column CREATED data size exceeds the maximum target table autosch.t1 column created size. Automatic truncation is enabled for all tables\/columns without further warnings.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As expected, <strong>mapping <code>DATE<\/code> to a PostgreSQL <code>date<\/code> loses the time part<\/strong>, and it can be seen in the target table:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> id | name  | amount |  created   | note\n----+-------+--------+------------+-------\n  1 | row 1 |  10.25 | 2026-09-19 | added\n  2 | row 2 |   20.5 | 2026-09-19 | added<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">An Oracle <code>DATE<\/code> carries a time, so the default <code>timestamp(0)<\/code> mapping is the right one.<\/p>\n\n\n\n<h2 id=\"autoschemaoptions-at-the-map-level\" class=\"wp-block-heading\"><code>AUTOSCHEMAOPTIONS<\/code> at the <code>MAP<\/code> level<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The same option can be set on a <code>MAP<\/code> statement, between parentheses. It then only applies to the tables of that <code>MAP<\/code> statement instead of the whole replicat:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MAP AUTOSCH.*, TARGET AUTOSCH.*, AUTOSCHEMAOPTIONS (TYPEMAP 'number' = 'bigint');<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code>2026-09-19T16:29:33.344+0000  INFO    OGG-06506  Oracle GoldenGate Delivery for PostgreSQL, REPTM.prm:  Wildcard MAP resolved (entry AUTOSCH.*): MAP \"AUTOSCH\".\"T1\", TARGET AUTOSCH.\"T1\", AUTOSCHEMAOPTIONS (TYPEMAP 'number' = 'bigint').\n2026-09-19T16:29:33.344+0000  INFO    OGG-30632  Oracle GoldenGate Delivery for PostgreSQL, REPTM.prm:  AutoSchemaOptions TypeMap is used, TypeNameMap: number -&gt; bigint.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">The table has a <code>bigint<\/code> key again. In this case, the other <code>number<\/code> columns outside of the <code>MAP<\/code> statement would keep the default <code>varchar(50)<\/code> mapping.<\/p>\n\n\n\n<h2 id=\"remapping-a-single-column\" class=\"wp-block-heading\">Remapping a single column<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">To change a single column, write the column name on the left side of the equal sign, instead of specifying the source type. The two forms work, first with the full name of the column:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>AUTOSCHEMAOPTIONS TYPEMAP AUTOSCH.T1.NAME = 'text'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And at the <code>MAP<\/code> level, with the column name alone:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MAP AUTOSCH.T1, TARGET AUTOSCH.T1, AUTOSCHEMAOPTIONS (TYPEMAP NAME = 'text');<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Both give the same table, with only <code>name<\/code> changed into <code>text<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code> Column  |              Type              | Collation | Nullable | Default\n---------+--------------------------------+-----------+----------+---------\n id      | character varying(50)          |           | not null |\n name    | text                           |           |          |\n amount  | numeric(10,2)                  |           |          |\n created | timestamp(0) without time zone |           |          |\n note    | character varying(20)          |           |          |<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">To remap several columns on the same <code>MAP<\/code>, separate the mappings with <strong>commas<\/strong> inside the parentheses, and write <code>TYPEMAP<\/code> only once:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>MAP AUTOSCH.T1, TARGET AUTOSCH.T1, AUTOSCHEMAOPTIONS (TYPEMAP NAME = 'text', NOTE = 'text');<\/code><\/pre>\n\n\n\n<pre class=\"wp-block-code\"><code> Column  |              Type              | Collation | Nullable | Default\n---------+--------------------------------+-----------+----------+---------\n id      | character varying(50)          |           | not null |\n name    | text                           |           |          |\n amount  | numeric(10,2)                  |           |          |\n created | timestamp(0) without time zone |           |          |\n note    | text                           |           |          |<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">A type and a column can be mixed in the same list. For example, <code>AUTOSCHEMAOPTIONS (TYPEMAP 'number' = 'bigint', NAME = 'text')<\/code> gives a <code>bigint<\/code> key and a <code>text<\/code> name.<\/p>\n\n\n\n<h2 id=\"to-summarize\" class=\"wp-block-heading\">To summarize<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>The default mapping files are located in <code>$OGG_HOME\/lib\/utl\/autoschema\/MappingJSON<\/code>. Check them before letting a replicat create tables. A <code>NUMBER<\/code> without precision becomes a <code>varchar<\/code> on PostgreSQL, for instance.<\/li>\n\n\n\n<li>The override syntax is <code>AUTOSCHEMAOPTIONS TYPEMAP 'source_type' = 'target_type'<\/code>. Use an equal sign, both types in single quotes, and one mapping per line.<\/li>\n\n\n\n<li>A source type is matched as written. An override on <code>'number'<\/code> does not change a <code>NUMBER(10,2)<\/code> column, which needs a separate <code>'number(10,2)'<\/code> entry.<\/li>\n\n\n\n<li>On a <code>MAP<\/code>, put the option between parentheses to limit it to those tables. For one column, use <code>AUTOSCH.T1.NAME = 'text'<\/code> globally or <code>NAME = 'text'<\/code> on the <code>MAP<\/code>.<\/li>\n\n\n\n<li>Pay attention to <code>OGG-03056<\/code> warnings: a target type smaller than the source, like <code>DATE<\/code> to <code>date<\/code>, truncates the data without stopping the initial load.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>In my blog about the new automatic schema evolution feature in GoldenGate 26ai, I was replicating the following table from Oracle to PostgreSQL: The replicat created a PostgreSQL table from an Oracle one during an initial load. It worked, but one choice was not mine: the NUMBER primary key became a varchar(50). Automatic Schema Evolution [&hellip;]<\/p>\n","protected":false},"author":152,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","_members_access_role":[],"_members_access_error":""},"categories":[3787,59],"tags":[3804,4263,4268,4269,328,2522,3229,3730,2602,3976,4270],"type_dbi":[3823,4266,4272,4271,3740,4265,3231,3881,2749,3977],"class_list":["post-47671","post","type-post","status-publish","format-standard","hentry","category-goldengate","category-oracle","tag-26ai","tag-autoschema","tag-autoschemaoptions","tag-datatype","tag-goldengate","tag-initial-load","tag-microservices","tag-ogg","tag-postgresql-2","tag-replicat","tag-typemap","type-26ai","type-autoschema","type-autoschemaoptions","type-datatype","type-goldengate","type-initial-load","type-microservices","type-ogg","type-postgresql","type-replicat"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.5 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping - dbi Blog<\/title>\n<meta name=\"description\" content=\"Overriding the datatype mapping of tables created by GoldenGate AutoSchema TYPEMAP rules: global, MAP and column level, on PostgreSQL.\" \/>\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\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping\" \/>\n<meta property=\"og:description\" content=\"Overriding the datatype mapping of tables created by GoldenGate AutoSchema TYPEMAP rules: global, MAP and column level, on PostgreSQL.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-08T06:20:00+00:00\" \/>\n<meta name=\"author\" content=\"Julien Delattre\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Julien Delattre\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 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\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/\"},\"author\":{\"name\":\"Julien Delattre\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/764ab019cc9dec42655b4c6b9b8e474e\"},\"headline\":\"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping\",\"datePublished\":\"2026-10-08T06:20:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/\"},\"wordCount\":674,\"commentCount\":0,\"keywords\":[\"26ai\",\"autoschema\",\"autoschemaoptions\",\"datatype\",\"GoldenGate\",\"Initial load\",\"microservices\",\"ogg\",\"postgresql\",\"replicat\",\"typemap\"],\"articleSection\":[\"GoldenGate\",\"Oracle\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/\",\"name\":\"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping - dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-10-08T06:20:00+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/764ab019cc9dec42655b4c6b9b8e474e\"},\"description\":\"Overriding the datatype mapping of tables created by GoldenGate AutoSchema TYPEMAP rules: global, MAP and column level, on PostgreSQL.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping\"}]},{\"@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\\\/764ab019cc9dec42655b4c6b9b8e474e\",\"name\":\"Julien Delattre\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g\",\"caption\":\"Julien Delattre\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/juliendelattre\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping - dbi Blog","description":"Overriding the datatype mapping of tables created by GoldenGate AutoSchema TYPEMAP rules: global, MAP and column level, on PostgreSQL.","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\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/","og_locale":"en_US","og_type":"article","og_title":"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping","og_description":"Overriding the datatype mapping of tables created by GoldenGate AutoSchema TYPEMAP rules: global, MAP and column level, on PostgreSQL.","og_url":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/","og_site_name":"dbi Blog","article_published_time":"2026-10-08T06:20:00+00:00","author":"Julien Delattre","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Julien Delattre","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/"},"author":{"name":"Julien Delattre","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e"},"headline":"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping","datePublished":"2026-10-08T06:20:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/"},"wordCount":674,"commentCount":0,"keywords":["26ai","autoschema","autoschemaoptions","datatype","GoldenGate","Initial load","microservices","ogg","postgresql","replicat","typemap"],"articleSection":["GoldenGate","Oracle"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/","url":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/","name":"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping - dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"datePublished":"2026-10-08T06:20:00+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/764ab019cc9dec42655b4c6b9b8e474e"},"description":"Overriding the datatype mapping of tables created by GoldenGate AutoSchema TYPEMAP rules: global, MAP and column level, on PostgreSQL.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/goldengate-26ai-autoschema-typemap-overriding-the-default-datatype-mapping\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GoldenGate 26ai AutoSchema TYPEMAP: overriding the default datatype mapping"}]},{"@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\/764ab019cc9dec42655b4c6b9b8e474e","name":"Julien Delattre","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a97d00e680bbf237126e24b65281cbcb66cd20bd1ed2d14bf928991b2bf68eb5?s=96&d=mm&r=g","caption":"Julien Delattre"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/juliendelattre\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/47671","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\/152"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=47671"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/47671\/revisions"}],"predecessor-version":[{"id":47673,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/47671\/revisions\/47673"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=47671"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=47671"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=47671"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=47671"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}