2014-12-05 4 views
1

Я пытаюсь загрузить файл JSON в Redshift с помощью команды COPY вместе с JSONPath. Из того, что я понял, для каждой записи в файле JSON команда COPY генерирует одну запись в SQL.Скопируйте данные из файла JSON в Redshift с помощью команды COPY

Мне нужно сгенерировать несколько записей в SQL из одной записи в JSON, но я не понимаю, как это сделать.

Вот пример. Скажем, у нас есть следующий файл в формате JSON:

{ 
    { 
     "id": 1, 
     "value": [1, 2, 3, 4], 
     "other": "ops" 
    }, 
    { 
     "id": 2, 
     "value": [5, 6, 7, 8] 
    } 
} 

Я хочу, чтобы генерировать следующие строки для хранения в SQL:

id value 
1 1 
1 2 
1 3 
1 4 
2 5 
2 6 
2 7 
2 8 

Что следует файл JSONPath должен выглядеть? Это выполнимо или нет?

В решении related SO post решение должно каким-то образом генерировать данные с правильной схемой, прежде чем загружать их в Redshift. Я мог бы предварительно обработать JSON-файл, чтобы как-то сгладить его и сохранить его на S3. Но это усложняет ситуацию.

Другой связанный с этим вопрос заключается в том, как установить значение по умолчанию, если одно поле отсутствует в одной записи (например, поле во второй записи вышеупомянутого примера)?

ответ

2

Вы не можете выполнить преобразование в команде копирования. Используйте инструменты ETL вместо прямой копии в RedShift. После использования формата JSON значение по умолчанию будет назначено на основе таблицы DDL.

Смежные вопросы