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をコピーしました