DynamoDBへCSVデータを簡単にインポートする方法

AWSサービス別
スポンサーリンク

今回は、DynamoDBへのデータインポートについてご紹介したいと思います。

 

DynamoDBとはNoSQLのDBでRDSのようなRDB(リレーショナルデータベース)とは異なります。

RDSとDynamoDBの違いについては以下の記事で詳しくご紹介しておりますので、そちらをご覧ください。

AWSのRDSやDynamoDBといったDBサービスの各種特徴まとめ
AWSのデータベースサービスって、 いっぱいあって何を使っていいかわかりませんよね? 「Aurora?」 「DynamoDB??」 いっぱいあり過ぎて、何をどう使うのかがわからない。 「よくわからないから、とりあえず一...

 

で、今回はそのDynamoDBにデータをインポートする方法のご紹介です。

DynamoDBへのインポートについて、AWSで公開されている方法としては
Data Pipeline等を使う方法があるのですが、もう少しサクッと行う方法はないか?

CSVファイルを使って簡単にDynamoDBへ読み込ませる方法は無いか?

 

そう思いまして、調査した結果をまとめたいと思います。

 

スポンサーリンク

DynamoDBへデータをインポートする方法

上記でも述べたように、DynamoDBへデータをインポートする方法としてAWS Data Pipelineを利用した方法が一般的です。

概要としては以下の通りです。

・S3バケットにインポートデータを格納する
・AWS Data Pipelineを利用してS3バケットのデータをDynamoDBへインポートする

但しこの方法、Data Pipelineを利用したことが無い場合、
ちょっとハードルが高いですよね?

もっと簡単にCSVファイルからインポートできるのが理想だと思います。

 

CSVファイルからDynamoDBへインポートする方法

というわけで前置きが長くなりましたが、今回はとあるツールを使った方法をご紹介します。

 

このツールは、CSVファイルに書かれているレコードを一件一件aws cliを利用したコマンドへ変換し、そのコマンドを一つのシェルファイルにまとめ、そのシェルを実行することで自動的にDynamoDBへデータを入れてくれるツールです。

<ツール使用の大まかな流れ>

  1. CSVファイルのヘッダーをフォーマット修正する
  2. ツールを使ってCSVファイルからシェルを作成する
  3. シェルを実行する

 

これでDynamoDBへデータインポート完了です。

 

ツール使用の準備

さて、このツールを利用するには以下の準備が必要となります。

 

Python3のインストール

こちらからPython3をダウンロードし、インストールします

 

Pandasのインストール

Python3をインストールすると、pipコマンドが利用できますので、以下のコマンドにてPandasをインストールします

 

aws cliをインストール

Macの場合は以下のコマンドでインストール可能です

 

アクセスキーとシークレットアクセスキーの登録

インポート対象のDynamoDBテーブルを保有しているAWSアカウントのアクセスキーとシークレットアクセスキーを端末に登録していない場合、登録します。

以下のような感じになります。

※[アクセスキー]と[シークレットアクセスキー]は適宜変更してください。

 

これで環境の準備は完了です。

 

ツールの使用方法

それでは本格的にツールの使用についてご説明させていただきます。

 

⑴CSVファイルのヘッダーを変更する

まずDynamoDBのテーブル構成に合わせてインポート対象のCSVファイルのヘッダーを変更します。

例えば以下のようなテーブル構成だった場合、

インポート対象のCSVファイルは以下のようなルールに則って修正します。
・列タイトルはテーブルの属性名と一緒にする
・文字列なら(S)、数値なら(N)

 

(2)ツールのソースをクローンしてくる

こちらをお使いください。

hidesan-xyz/import_to_dynamodb
A project to put test data that originally existed in a new AWS dynamoDB table simply - hidesan-xyz/import_to_dynamodb

 

(3)コマンドを実行する

実行ファイルのディレクトリ内へ行き、以下のコマンドを実行します。

 

注意すべきは、CSVファイルをcreate_insert_command.pyファイルと同じディレクトリ内に入れ、第一引数にファイル名(.csvを抜く)、第二引数にインポート先となるDynamoDBのテーブル名とすることです。

例えば、CSVファイル名が「importdata.csv」、テーブル名が「testtable」だったら

 

(4)出力されたシェルファイルを実行する

同フォルダ内にシェルファイルが出力されますので、以下のようなコマンドでそのファイルを実行します。

例えばシェルファイル名が「testtable_import_20200321101539.sh」の場合、以下のようなコマンドとなります。

大量のデータですと時間がかかりますが、100件程度でしたら数分でインポートが完了致します。

 

まとめ

DynamoDBは今やAWSの人気サービスの一つとなり、非常に多くの方が利用されています。

今回は手軽にできるDynamoDBのCSVインポート方法をご紹介させていただきました。

件数が多くなると、多少時間はかかると思いますが、そこまでデータ量が多くなく、
とりあえず簡単にインポートしたいという時にお使いください。

以上、ひでさんでした!

タイトルとURLをコピーしました