2015-03-24 3 views
1

У меня есть данные JSON на Java, и я хочу хранить в базе данных оракула. Я хочу сохранить его в одной конкретной области, потому что он не будет запрашиваться. Какой тип данных оракула следует использовать для этого столбца для хранения формата JSON? Должен ли я преобразовать его в строку и сохранить его как таковой или есть что-то конкретное для JSON в oracle.Держите JSON в базе данных оракула

+0

JSON это просто формат ... Вы можете использовать CLOB – gtgaxiola

+0

Если вы имеете в виду JSON Затем строка хранится как CLOB в Oracle. Кстати, если вы не спрашиваете, почему вы хотите сохранить? –

+0

Извините, не обратив внимание на то, что мне не нужно писать какие-либо условия в зависимости от данных в JSON. В этой таблице есть другие столбцы, к которым привязан JSON, и я хочу сохранить их вместе. – user1985273

ответ

3

Если это JSON, то это строка. Поэтому я бы рассмотрел стандартные текстовые типы Oracle для их хранения, например CLOB, как и предложенные комментарии. Также может пригодиться официальный Oracle documentation of storing JSON data in Oracle.

0

База данных Oracle поддерживает данные JSON изначально с функциями реляционной базы данных, включая транзакции, индексирование, декларативный запрос и представления. В отличие от данных XML, которые хранятся с использованием типа данных XML-типа SQL, данные JSON хранятся в Oracle Database с использованием типов данных SQL VARCHAR2, CLOB и BLOB. Когда это возможно, Oracle рекомендует использовать хранилище BLOB. В частности, это устраняет необходимость в любом преобразовании набора символов (см. JSON: наборы символов и кодировка символов в базе данных Oracle).

Максимальный размер столбца VARCHAR2 или NVARCHAR2 составляет всего 4 КБ. В разделе 12c, если у вас есть свойство MAX_STRING_SIZE сервера, установленное в EXTENDED, этот лимит может быть увеличен до 32kb, но все равно нигде около 150kb.

Использование IS JSON в проверочного ограничения по обеспечению JSON данных строго Хорошо Сформированный (Standard)

CREATE TABLE DTI_REPORT 
    (id   RAW (16) NOT NULL, 
    date_loaded TIMESTAMP WITH TIME ZONE, 
    dti_document CLOB 
    CONSTRAINT ensure_json CHECK (dti_document IS JSON (STRICT))); 



INSERT INTO DTI_REPORT 
    VALUES (SYS_GUID(), 
      SYSTIMESTAMP, 
      '{"Person"   : {"name":"Musa","age":45}, 
      "Report"   : "DTI0001", 
      "Loans"   : {"loan1":{...},"loan2":{...}}, 
      "Salary"   : 4000, 
      "DTI"   : "30%"}'); 
Смежные вопросы