Ошибка при настройке процесса репликации золотых ворот, для документа JSON преобразовать в таблицу rdbms

Я пытаюсь преобразовать и реплицировать документ json, хранящийся в таблице oracle (источник) в качестве значения clob, в целевую базу данных (oracle) как таблицу rdbms, используя oracle goldengate:

GGSCI (ggsrv2.localdomain) 39> view params RJSON3

Replicat rjson3
DiscardFile ./dirrpt/rjson3.dsc, Purge
USERID ogg, PASSWORD oracle
Map HR.JSON_TEST_SOURCE, Target HRTRG.JSON_TEST_TARGET,
SQLEXEC (id lookup, QUERY 'SELECT json_value(jsondoc, '$.IDNumber') AS J_ID, json_value(jsondoc, '$.Description') AS J_DESCRIPTION, json_value(jsondoc, '$.DecimalNumber') AS J_DECIMAL FROM
HRTRG.JSON_TEST_SOURCE
WHERE ID = :V_ID ',
PARAMS (V_ID = ID)),
J_ID = @GETVAL(lookup.J_ID)),
J_DESCRIPTION = @GETVAL(lookup.J_DESCRIPTION)),
J_DECIMAL = @GETVAL(lookup.J_DECIMAL))
);

Сообщение об ошибке:

2019-01-06 07:56:54  WARNING OGG-10173  (rjson3.prm) line 4 column 317: Parsing error, value "'@'" syntax error.
2019-01-06 07:56:54  WARNING OGG-10173  (rjson3.prm) line 4: Parsing error, option [sqlexec] for parameter [map] has unrecognized value "=".
2019-01-06 07:56:54  WARNING OGG-10173  (rjson3.prm) line 4: Parsing error, option [sqlexec] for parameter [map] has unrecognized value "J_ID"."
Database version 12cR2,GoldenGate version 12.3 

Исходная таблица:

SQL> desc HR.JSON_TEST_SOURCE;
 Name     Null?    Type
 -------  -------- ------------
 ID       NOT NULL NUMBER(10)
 JSONDOC           CLOB

Пример данных по исходной таблице:

SQL> col JSONDOC for a55
SQL> select * from HR.JSON_TEST_SOURCE;

        ID JSONDOC
---------- -------------------------------------------------------
      1600 { "IDNumber"      : 01,
              "Description"   : "I am Shanoj",
              "DecimalNumber" :

      1601 { "IDNumber"      : 02,
              "Description"   : "I am Joby",
              "DecimalNumber" : 1

      1602 { "IDNumber"      : 03,
              "Description"   : "I am Siriram",
              "DecimalNumber"

      1603 { "IDNumber"      : 04,
              "Description"   : "No idea who I am",
              "DecimalNumb

Целевая таблица:

SQL> desc HRTRG.JSON_TEST_TARGET
 Name           Null?    Type
 -------------- -------- --------------
 J_ID           NOT NULL VARCHAR2(4000)
 J_DESCRIPTION           VARCHAR2(4000)
 J_DECIMAL               VARCHAR2(4000)

1 ответ

Похоже, вы можете использовать некоторые адаптеры. Другой вариант - использовать материализованное представление цели, чтобы получить значения JSon в виде записей, используя json_values ​​().

Другие вопросы по тегам