Экспорт данных из DynamoDB
Можно ли экспортировать данные из таблицы DynamoDB в каком-либо формате?
Конкретный вариант использования заключается в том, что я хочу экспортировать данные из моей производственной базы данных DynamodB и импортировать эти данные в мой локальный экземпляр DynamodB, чтобы мое приложение могло работать с локальной копией данных вместо производственных данных.
Я использую ссылку как локальный экземпляр DynamoDB.
Ответы
Ответ 1
Существует инструмент с именем DynamoDBtoCSV
это может быть использовано для экспорта всех данных в файл CSV. Однако для обратного вам придется создать собственный инструмент. Я предлагаю добавить эту функцию в инструмент и добавить ее в репозиторий Git.
Другой способ - использовать AWS Data Pipeline для этой задачи (вы сэкономите все расходы на чтение данных вне инфраструктуры AWS). Подход аналогичен:
- Построить конвейер для вывода
- Загрузите файл.
- Разобрать его с помощью специального ридера.
Ответ 2
Экспортировать его из интерфейса DynamoDB в S3.
Затем преобразуйте его в Json с помощью sed:
sed -e 's/$/}/' -e $'s/\x02/,"/g' -e $'s/\x03/":/g' -e 's/^/{"/' <exported_table> > <exported_table>.json
Источник
Ответ 3
Это экспортирует все элементы как документы jsons
aws dynamodb scan --table-name TABLE_NAME > export.json
Ответ 4
Попробуйте мой простой node.js script dynamo-archive. Он экспортирует и импортирует в формате JSON.
Ответ 5
Я нашел лучший текущий инструмент для простого импорта/экспорта (включая круговое отключение через DynamoDB Local), это Python script:
https://github.com/bchew/dynamodump
Этот script поддерживает экспорт/импорт схемы, а также импорт/экспорт данных. Он также использует пакетные API для эффективной работы.
Я успешно использовал его для передачи данных из таблицы DynamoDB в локальную сеть DynamoDB для целей разработки, и он работал очень хорошо для моих нужд.
Ответ 6
Для тех из вас, кто предпочитает это с помощью 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);
Ответ 7
Я создал класс утилиты, чтобы помочь разработчикам с экспортом. Это можно использовать, если вы не хотите использовать функцию передачи данных AWS. Ссылка на git hub repo - здесь
Ответ 8
Вот способ экспортировать некоторые данные (часто мы просто хотим получить образец наших данных prod локально) из таблицы, используя aws cli и jq. Предположим, у нас есть таблица prod, которая называется удивительно my-prod-table
и локальная таблица my-local-table
Для экспорта данных выполните следующее:
aws dynamodb scan --table-name my-prod-table \
| jq '{"my-local-table": [.Items[] | {PutRequest: {Item: .}}]}' > data.json
По сути, мы сканируем таблицу prod, преобразовываем выходные данные сканирования в формат batchWriteItem и выгружаем результат в файл.
Чтобы импортировать данные в локальную таблицу, выполните:
aws dynamodb batch-write-item \
--request-items file://data.json \
--endpoint-url http://localhost:8000
Примечание. У запроса batch-write-item
есть некоторые ограничения: операция BatchWriteItem может содержать до 25 отдельных запросов PutItem и DeleteItem и может записывать до 16 МБ данных. (Максимальный размер отдельного элемента составляет 400 КБ.).
Ответ 9
Dynamo DB теперь предоставляет способ экспорта и импорта данных в/из S3
http://aws.amazon.com/about-aws/whats-new/2014/03/06/announcing-dynamodb-cross-region-export-import/
Ответ 10
если вам нужно, вы можете преобразовать данные Динамо в JSON с этим
https://2json.net/dynamo
Ответ 11
В подобном случае использования я использовал потоки DynamoDB для запуска AWS Lambda, который в основном писал мой экземпляр DW. Вероятно, вы могли бы написать свою Лямбду, чтобы записать каждую из табличных изменений в таблицу в своей непроизводственной учетной записи. Таким образом, ваша таблица Devo оставалась бы очень близкой к Prod.
Ответ 12
В веб-консоли DynamoDB выберите свою таблицу, чем Actions → Export/Import