Экспорт данных из DynamoDB

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

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

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

Ответ 1

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

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


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

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

Ответ 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 КБ.).

Ответ 10

если вам нужно, вы можете преобразовать данные Динамо в JSON с этим https://2json.net/dynamo

Ответ 11

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

Ответ 12

В веб-консоли DynamoDB выберите свою таблицу, чем Actions → Export/Import