1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Amazon DynamoDBでcsvをExport/Importする方法

Last updated at Posted at 2023-11-14

こんにちは。

Amazon DynamoDB上のテーブルからcsvをExport、またはImportする方法について調べたのでいくつか方法をまとめました。

Export

コンソールの利用

DynamoDBの管理画面からCSVをダウンロードすることができる。仕様として画面に表示されている項目しか出力できない(最大100件)

image.png

AWS CLI等の利用

AWS CLI(AWS SDK)でテーブルをスキャンしcsv形式で出力するコードを自作する。

aws dynamodb scan --table-name test | jq -r '.Items[] | [.id.N, .name.S, .flg.BOOL] | @csv' >> test.csv

Amazon AthenaのFederated Queryの利用

Amazon AthenaではFederated Queryを利用することでS3以外のデータソースに対してクエリをかけることができる。また、Athenaのクエリ結果はS3にcsv形式で保存される。これを利用してDynamoDBに対してクエリを発行することでcsvをExportできる。

awslabs/dyneinの利用

Importの章で後述

AWS DataPipelineの利用

出来るが使いどころは限られる印象。

Import

S3からの一括インポート

S3上のcsvを一括インポートする機能を利用する。Partition KeyとSort Keyはインポート時に指定した型で、それ以外はString型で取り込まれる。なお、既存のテーブルへはImport不可という制限がある。

AWS CLI等の利用

自作はできるが手間がかかる。例えばAWS CLIのbatch-write-itemを利用する場合、引数としてcsvをそのまま渡せないのでDynamoDB JSON形式に変換する必要がある。さらに一度に最大25件までのデータまでしか投入できない。それ以上のデータを投入したい場合はファイルを分割する必要がある。

put-itemを利用する場合、1件1件書き込む都合上Itemの件数が多い場合batch-write-itemと比較して時間がかかる。

「Amazon DynamoDB への CSV 一括取り込みの実装」の利用

AWSで紹介されているソリューション「Amazon DynamoDB への CSV 一括取り込みの実装」を利用する。CloudFormationを実行後、パラメーターで指定したS3のパスにcsvを配置すると、指定のテーブルにデータをImportしてくれる。こちらは既存のテーブルへImport可能。

awslabs/dyneinの利用

awslabsから提供されているdyneinというRustで記述されたCLIツールを利用する。以下のような感じでImportできる。ExportもImportと同じような感じでできる。

# Import
$ dy import --table test --format csv --input-file test.csv

# Export
$ dy export --table test --output-file out.csv --format csv 

AWS DataPipelineの使用

出来るが使いどころは限られる印象。

おわり

お読みいただきありがとうございました!(re:Inventで既存テーブルにcsvをImportする機能来ないかな。)

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?