2014-09-13 4 views
0

Я использую скрипт 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 

Проблема заключается в том, что колонка активна динамически изменяется позже, и в следующий раз, когда я загрузить одни и те же данные снова он заменяется ложным, потому что, колонка Безразлично» t существует в csv.

Я попытался удалить столбец из объемного загрузчика, но тогда столбцы просто исчезают. Вероятно, это связано с тем, что объекты заменяются и не обновляются. Есть ли способ сохранить уже существующие столбцы, не заменяя/удаляя их при загрузке?

ответ

1

Извините, нет простого способа объединить свойства с загрузчиком. Как вы заметили, он создает объекты на основе ваших данных CSV, а затем сохраняет их с известными ключами, перезаписывая существующие объекты. Чтобы выполнить слияние, вам нужно будет загружать существующие сущности, выполнять слияние в вашем наборе данных, а затем загружать объединенные объекты.

Есть крючки для создания причудливых вещей во время логики загрузчика, которые могут помочь реализовать инструмент слияния. См. Этот связанный вопрос SO: Merge multiple columns in bulkloader Но вам все равно нужно получить свойства, чтобы каким-то образом слиться с хранилищем данных. Хранилище данных не может выполнить слияние самостоятельно.

+0

Я не уверен, что это поможет вам с тех пор, как с 2010 года, но вот старая глава загрузчика по объему из первого выпуска моей книги в App Engine: http://ae-book.appspot.com/chapters/bulkdata Это предшествует версии загрузчика, использующего 'bulkloader.yaml', но, возможно, это будет полезно. Я считаю, что загрузчик по объему обычно считается незарегистрированной функцией Python SDK. (Резервное копирование/восстановление по-прежнему является поддерживаемой функцией, но больше не зависит от утилиты объемного загрузчика.) –

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