#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 Спасибо за ответ. Я постараюсь поступить именно так.