Использовал следующий код:
CREATE TABLE json_documents (
id RAW(16) NOT NULL,
data CLOB,
CONSTRAINT json_documents_pk PRIMARY KEY (id),
CONSTRAINT json_documents_json CHECK (data IS JSON (STRICT))
);
для импорта:
declare
b BFILE := bfilename('MY_DIR', 'jdeals.json');
c clob;
l_dest_offset INTEGER := 1;
l_src_offset INTEGER := 1;
l_bfile_csid NUMBER := 0;
l_lang_context INTEGER := 0;
l_warning INTEGER := 0;
begin
dbms_lob.open(b);
dbms_lob.createtemporary(c, TRUE);
dbms_lob.loadclobfromfile(c, b, dbms_lob.getlength(b),l_dest_offset,l_src_offset,nls_charset_id('AL32UTF8'),l_lang_context,l_warning);
INSERT INTO json_documents (id, data)
VALUES (SYS_GUID(), c);
dbms_lob.freetemporary(c);
DBMS_LOB.FILECLOSEALL;
commit;
end;
Дело в том, что он работает с несколькими килобайтами json-файла, он работает с 2-гигабайтным json, но мне нужноимпортировать 10-гигабайтный файл json, и он продолжает выдавать нарушение ORA-02290. Нарушение .json_documents_json нарушено.До сих пор я пытался: создать таблицу без ограничения json и использовать для нее запрос json (конечно, это не удалось), создать ограничение json после вставки данных (получить тот же ORA-02290)
Запросс select * показывает столбец DATA с разработчиком в pl / SQL (возможно, ограничение для разработчика pl / SQL).Получение длины столбца показывает точное количество байтов в файле, так что я уверен, что все данные есть, и я уверен, что это действительный JSON.
Итак, мой вопрос:
Существует ли ограничение размера для столбца CLOB для создания на нем ограничения JSON?