Help us understand the problem. What is going on with this article?

【DynamoDB】CSVやExcelから簡単にデータをインポートできるRazorSQLが便利! (インストールから簡単な使い方まで)

More than 1 year has passed since last update.

はじめに

最近、仕事でDynamoDBを使うことが増えてきました。DynamoDBにさくっとデータ投入するのであれば、RazorSQLが便利だよ!という話です。日本語での情報をあまり見かけないので投稿します。

今の悩み

DynamoDBに開発中のテストデータを手動で入れるのが本当に面倒

項目の作成から毎回手動で1つ1つ追加していくのは嫌だ・・・。

image

DataPipelineを組むスキルも(まだ)ない

DynamoDBでデータのexport/importを行うのように、DynamoDBにインポートするならDataPipelineを使うのが王道なのだと思います。試しに触ってみましたが、よくわかりませんでした。なにより、DataPipelineを習得する時間をかけられない。ぐぬぬ。

かと言って、わざわざJSONファイルを用意するのも面倒だ・・・。
むしろExcelとか、CSVでインポートできないのか・・・。

RazorSQLを試してみた

同僚からよさげなツールを紹介してもらいました。

https://www.razorsql.com/

DynamoDBに対応しており、Windows、Mac、Linuxで使えます。
30日無料で使える評価版があります。

インストール手順

早速インストールしてみましょう。

  • acceptをクリック
    image

  • インストール先を指定
    image

  • ショートカットメニューの作成

    • デフォルトでOK

image

  • デスクトップショートカットの作成
    • デフォルトでOK

image

  • インストール実行
    • Installをクリック

image

RazorSQLの起動

  • 起動直後の画面。トライアル版なので30日使える
    • Register Laterをクリック

image

  • pgAdminのような、よくあるDB開発ツールのUIが表示される
    • 左側のClick to Connect to a Databaseをクリックする image

DynamoDBへの接続

  • DynamoDB(Amazon)を選択し、Continueをクリック
    image

  • 自分のAWSアカウントのAccesskeyなどを入力して、CONNECTをクリック

    • Profile Name
      • 任意の名称
    • AWS Access Key
      • 自分のIAMロールのキー
    • AWS Secret Key
      • 自分のIAMロールのキー
    • AWS Server
      • 東京リージョンなら、dynamodb.ap-northeast-1.amazonaws.com
    • Max Rows per Query
      • 必須項目なので、任意の整数を入れる
      • 「クエリで取得できる最大行数」プロビジョニングされたキャパシティのことではないので注意。後で変更も可能。

image

  • 設定値が正しければ、以下の画面が表示される
    image

  • 接続に成功するとテーブル一覧が表示される

    • + ボタンをクリックしていくことでツリー状に表示される image

テーブル情報の表示

  • 任意のテーブルを右クリックして、 View Contentsをクリック
    image

  • テーブル内のデータが表示される。日本語は文字化けしてしまうので注意が必要
    image

データの追加

  • 表示されたデータをダブルクリックすると、データ編集画面が表示される
    image

  • +(Insert Row)をクリックすると、項目が1つ追加される

    • 開発中のテーストデータ登録を入れるなら便利かも

image

  • 入力データの反映を行うためには、SQLタブを開き、 Execute SQLをクリックする
    image

  • 一番左のrefreshボタンをクリックすると、再描画される。項目が増えていることを確認
    image

大量データのインポート

  • ExcelでDynamoDBにインポートしたいデータを用意
    image

  • 任意のテーブルを右クリックして、 Import Dataをクリック
    image

  • Excel(XLSX format)を選択して、 Nextをクリック
    image

  • インポートするExcelファイルを選択して、 Nextをクリック

    • Excelファイルを読み込むと、自動的にStart RowEnd Rowに値が入る
    • 1行目が列名だった場合は2行目から読み込んでくれるので便利 image
  • 読み込んだExcelファイルから、SQLが生成される。デフォルトのまま Executeをクリック
    image

  • インポートが実行される。成功すると以下のダイアログが表示される。
    image

  • インポートしたテーブルを表示すると、データが増えている
    image

  • AWS側から見ても、データが増えている。素晴らしい!!!!
    image

テーブルごとデータの全件削除

  • 任意のテーブルを選択して、右クリック Dropをクリック
    image

  • Deleteをクリック
    image

  • テーブル内の全データが削除されたことを確認
    image

  • ある程度の時間が経過するとテーブルも削除される

    • DropのほかにDrop Tableもあるが、Dropを実行するとテーブルも消えた。

【データインポート時のTips1】キー以外の項目をインポートする

  • DynamoDBのテーブルが空の場合、RazorSQLのデフォルトではPKのみインポートされる。そのため、以下のようなデータ(ハッシュキー:tag レンジキー:keyword)を用意しても、キーではないcreated_atをインポートすることができない。
tag keyword created_at
hoge hoge 123456789
fuga fuga 123456789
  • RazorSQLにcreated_atを認識させるためには、DynamoDBにcreated_atを持つデータを1つ用意する。

image

  • そうすることで、インポート時にcreated_atが表示されるようになる image

【データインポート時のTips2】Number型の項目をインポートする

  • ExcelやCSV形式で、桁数の大きい数字(例:UNIX時間)を入力しても、RazorSQL側で1.2346E+10等に変化されてしまう場合がある
  • そういう時は、Excel側で CSV(コンマ区切り)にすると正しくインポートできる。 image
  • 以下は、UNIX時間を含む項目をCSVインポートした例 image

価格

1ユーザ当たり、$99.95とのことです。

https://razorsql.com/register.html

おわりに

RazorSQLは、有償ツールですが買っても約1万円なので、利便性を考慮してチームで買いたいと思います。DynamoDBを使った開発が効率化できそうです!

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away