DynamoDB Import and Export
Import and export move DynamoDB data between tables and Amazon S3 without any custom code. Export writes a copy of your table into S3 files. Import reads files from S3 and builds a new table. Neither feature consumes the read or write capacity of your tables.
The Moving Day Picture
A family moving to a new home packs belongings into labeled boxes, ships the boxes, and unpacks them at the destination. Export packs your table into boxes (files in S3). Import unpacks boxes into a fresh table. The old table keeps running while the packing happens.
Export to Amazon S3
Export creates a snapshot of table data in an S3 bucket. Two requirements apply: the table needs point-in-time recovery turned on, and the bucket must allow DynamoDB to write files.
Export Options
- Full export: copies the complete table as of a chosen second within the recovery window.
- Incremental export: copies only the changes made between two points in time.
Export Formats
| Format | Description |
|---|---|
| DynamoDB JSON | JSON lines that include DynamoDB type markers such as S and N |
| Amazon Ion | A typed text and binary format from Amazon |
aws dynamodb export-table-to-point-in-time \ --table-arn arn:aws:dynamodb:ap-south-1:123456789012:table/Orders \ --s3-bucket my-export-bucket \ --export-format DYNAMODB_JSON
Import from Amazon S3
Import loads data from S3 into a new table. DynamoDB creates the table as part of the import. The feature does not write into an existing table.
Supported Source Formats
- CSV
- DynamoDB JSON
- Amazon Ion
Source files may be uncompressed, GZIP, or ZSTD compressed. During setup, you define the key schema and capacity mode of the new table. You can also add secondary indexes at creation time.
aws dynamodb import-table \ --s3-bucket-source S3Bucket=my-import-bucket,S3KeyPrefix=students/ \ --input-format CSV \ --table-creation-parameters file://table-definition.json
Diagram: Export and Import Flow
EXPORT DynamoDB table (PITR on) ──► S3 bucket (files) ──► Athena, Glue, analytics tools IMPORT S3 bucket (CSV / JSON / Ion) ──► New DynamoDB table
Export vs Backup
| Feature | Backup and Restore | Export to S3 |
|---|---|---|
| Result | Restores into a DynamoDB table | Gives open-format files |
| Main use | Disaster recovery | Analytics, archiving, sharing |
| Read capacity used | None | None |
| Readable outside DynamoDB | No | Yes |
Common Uses
- Analytics: Query exported files with Amazon Athena using SQL.
- Archiving: Keep old data cheaply in S3 for compliance needs.
- Migration: Move data between AWS accounts or Regions.
- Seed data: Load test data from a CSV file into a development table.
- Data sharing: Give another team a copy without granting table access.
Planning a Large Export or Import
Large tables take time to export or import, because DynamoDB processes the data in the background. Start the job during a quiet period, and track its status on the Exports or Imports page in the console. An export job reports the number of items and the size of the files it wrote. An import job reports processed rows, imported items, and errors. Compare these counts with your source data to confirm that nothing went missing.
Plan the S3 layout before you begin. Use a clear prefix for each table and date, such as orders/2026-06-01/. A tidy layout helps analysts find the right files and keeps old exports easy to delete under a lifecycle rule.
Practical Tips
- Check that CSV headers match your key attribute names before import.
- Review the import error log in CloudWatch Logs when rows fail.
- Encrypt the destination bucket and restrict its access.
- Schedule regular exports for long-term archives.
- Remember that S3 storage and import charges apply. Check current AWS pricing.
Summary
- Export copies table data into S3 files and needs point-in-time recovery.
- Import builds a new table from CSV, DynamoDB JSON, or Ion files.
- Neither feature uses table read or write capacity.
- Exports suit analytics and archives, while backups suit recovery.
