Как сохранить массив JSON в базе данных Oracle

#sql #oracle #informatica #informatica-cloud

#sql #Oracle #информатика #информатика-облако

Вопрос:

Я использую IICS для выполнения ETL. Мой источник-файл JSON. Я использую анализатор иерархии для анализа этого JSON и загрузки выходных данных в базу данных. Все идет хорошо, кроме одного. В этом исходном файле JSON есть одно поле, которое представляет собой массив, подобный этому:

этикетка:[Красный, Зеленый, Синий, Желтый].

Теперь в таблице, в которую я загружаю данные, есть столбец метки varchar2(510 байт). Когда данные загружаются в цель при выполнении задания, столбец метки в таблице получает только одно значение, которое является последним индексом в исходном массиве, в приведенном выше случае он получает только «Желтое» значение, в то время как остальные 3 значения теряются. Кто-нибудь может сказать мне, как сохранить весь массив в столбце таблицы? PS: У нас нет гибкости для использования любого языка программирования в IICS, все, что нам нужно сделать, это использовать преобразования IICS. Пожалуйста, дайте мне знать, если потребуется дополнительная информация.

Заранее спасибо!

Комментарии:

1. Что вы подразумеваете под «сохранением всего массива в столбце таблицы»? Вы хотите label , чтобы в столбце была, например, строка значений, разделенная запятыми? Это нарушило бы базовую нормализацию реляционной модели, но, вероятно, возможно. Это, скорее всего, сделает работу с label колонкой позже болезненной. Похоже label , это не должен быть varchar2 столбец, это должна быть дочерняя таблица (или, по крайней мере, вложенная таблица).

2. Массив не является хорошим типом данных для реляционной модели, потому что если нарушает 1-й NF. Вам лучше сохранить каждый элемент массива как отдельную строку в другой таблице, которая имеет внешний ключ к исходной таблице.

3. @Justin Case Да, я хочу хранить только так. Я хочу, чтобы строковые значения столбцов меток разделялись запятыми. Но если это нарушает базовую нормализацию реляционной модели, нужно думать по-другому. Спасибо за ответ и точный ответ 🙂

4. @astentx Спасибо за ответ. Я постараюсь поступить именно так.