Обновление данных с помощью Bulloader
Я использую скрипт на Python и загружаю некоторые данные в серверную часть своего движка.
Вот это определение в bulkloader.yaml
- kind: Subcategory
connector: csv
connector_options:
encoding: utf-8
property_map:
- property: __key__
external_name: id
export_transform: transform.key_id_or_name_as_string
import_transform: transform.none_if_empty(int)
- property: name
external_name: name
- property: categoryId
external_name: categoryId
export_transform: transform.key_id_or_name_as_string
import_transform: transform.none_if_empty(int)
- property: language
external_name: language
- property: active
external_name: active
import_transform: bool
Проблема в том, что активный столбец позже динамически изменяется, и в следующий раз, когда я снова загружаю те же данные, он заменяется ложным, потому что в csv столбец не существует.
Я попытался удалить столбец из массового загрузчика, но затем столбцы просто исчезают. Вероятно, потому, что сущности заменены, а не обновлены. Есть ли способ сохранить уже существующие столбцы без замены / удаления их при загрузке?
1 ответ
К сожалению, нет простого способа объединить свойства с массовым загрузчиком. Как вы заметили, он создает сущности на основе ваших CSV-данных, затем сохраняет их с известными ключами, перезаписывая существующие сущности. Чтобы выполнить слияние, вам нужно будет массово загрузить существующие сущности, выполнить слияние в вашем наборе данных, а затем загрузить объединенные сущности.
В логике загрузчика есть ловушки для выполнения причудливых вещей, которые могут помочь реализовать инструмент слияния. Посмотрите на этот связанный вопрос SO: Объединить несколько столбцов в массовом загрузчике. Но вам все равно нужно будет выбрать свойства для объединения из хранилища данных. Хранилище данных не может выполнить объединение самостоятельно.