2013-09-19 3 views
4

Можно ли экспортировать данные из таблицы DynamoDB в некотором формате?Экспорт данных из DynamoDB

Конкретный вариант использования - это то, что я хочу экспортировать данные из своей производной базы данных dynamodb и импортировать эти данные в свой локальный экземпляр dynamodb, чтобы мое приложение могло работать с локальной копией данных вместо производственных данных.

Я использую link как местный экземпляр DynamoDB.

ответ

10

Существует инструмент по имени DynamoDBtoCSV

, которые могут быть использованы для экспорта всех данных в файл CSV. Однако, наоборот, вам нужно будет создать собственный инструмент. Мое предложение состоит в том, что вы добавляете эту функциональность в инструмент и вносите его в репозиторий Git.


Другой способ заключается в использовании AWS Pipeline данных для выполнения этой задачи (вы сохраните все расходы, связанные с чтением данных из-за пределов AWS infraestructure). Подход аналогичен:

  1. Построить трубопровод для вывода
  2. Скачать файл.
  3. Разберите его с помощью пользовательского считывателя.
3

Попробуйте мой простой скрипт node.js dynamo-archive. Он экспортирует и импортирует в формате JSON.

+0

Это довольно много сломанной - он может экспортировать, но он не может импортировать, он просто сбой –

+0

@DenisMysenko, пожалуйста, отправьте билет, мы исправим – yegor256

6

экспортировать его из интерфейса DynamoDB в S3.

Затем преобразовать его в Json с помощью СЭД:

sed -e 's/$/}/' -e $'s/\x02/,"/g' -e $'s/\x03/":/g' -e 's/^/{"/' <exported_table> > <exported_table>.json 

Source

+1

Это спасло мой день! – user3003675

1

Я нашел лучший инструмент тока для простых импорта/экспорта (в том числе кругооборот через DynamoDB Local) это Python скрипт:

https://github.com/bchew/dynamodump

Этот скрипт поддерживает схемы экспорта/импорта, а также импорт/экспорт данных. Он также использует пакетные API для эффективной работы.

Я использовал его для получения данных из таблицы DynamoDB в DynamoDB для целей разработки, и это сработало очень хорошо для моих нужд.

1

Для тех из вас, кто предпочитает это с помощью java, есть DynamodbToCSV4j.

JSONObject config = new JSONObject(); 
config.put("accessKeyId","REPLACE"); 
config.put("secretAccessKey","REPLACE"); 
config.put("region","eu-west-1"); 
config.put("tableName","testtable"); 
d2csv d = new d2csv(config); 
+0

Работал как шарм. Однако в этой библиотеке должно быть реализовано разбиение на страницы последнего оцениваемого ключа. – ZZzzZZzz

2

В веб-консоли DynamoDB выберите таблицу, чем Actions -> Экспорт/Импорт

+0

Это будет экспортировать только те записи, которые вы выбрали. –

+1

Этот метод также ограничивает вас экспортом не более 100 записей. Это подходит для небольших наборов данных, но для больших наборов данных рекомендуется использовать конвейер для экспорта на S3. –

2

Я создал класс утилиты, чтобы помочь разработчикам экспорта. Это можно использовать, если вы не хотите использовать функцию передачи данных AWS.Ссылка на мерзавец хаба репо - here

0

В подобном потребительной случае, я использовал DynamoDB Streams для запуска АМС Lambda, который в основном писал в мой экземпляр DW. Вероятно, вы могли бы написать свою Лямбду, чтобы записать каждую из табличных изменений в таблицу в своей непроизводственной учетной записи. Таким образом, ваша таблица Devo оставалась бы очень близкой к Prod.

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