LoginSignup
7

More than 5 years have passed since last update.

S3からAuroraへのデータインポート

Posted at

背景

Athenaで処理していたデータをAuroraで管理するような仕様ができたので、S3からAuroraへのデータインポートを考え始めた。

データインポート

Auraoの公式ドキュメントを参照すれば大体いけます。

Amazon S3 バケットのテキストファイルから Amazon Aurora MySQL DB クラスターへのデータのロード - Amazon Relational Database Service

↑のドキュメントを簡単にまとめると、以下のことです。

ハマったところ

Amazon Aurora MySQL から AWS の他のサービスへのネットワーク通信の有効化 - Amazon Relational Database Service

↑はわかりませんでしたので、無視した。そしたら、全然S3とつながらなかった。それはそうですね。Auroraはprivate vpcに置いてあるため、そのまま外のS3へのアクセスは不可能です。

対策

endpointを作成

VPC -> エンドポイント -> エンドポイント作成

Screen Shot 2018-10-25 at 18.20.04.png

結果

以下のようにテストしました。

テストデータ

  • テーブルの作成
mysql> create table users_01(
    -> userid integer not null primary key,
    -> username char(8),
    -> firstname varchar(30),
    -> lastname varchar(30),
    -> city varchar(30),
    -> state char(2),
    -> email varchar(100),
    -> phone char(14),
    -> likesports varchar(100),
    -> liketheatre varchar(100),
    -> likeconcerts varchar(100),
    -> likejazz varchar(100),
    -> likeclassical varchar(100),
    -> likeopera varchar(100),
    -> likerock varchar(100),
    -> likevegas varchar(100),
    -> likebroadway varchar(100),
    -> likemusicals varchar(100));
Query OK, 0 rows affected (3.44 sec)
  • txtファイルの用意
aws s3 cp allusers_pipe.txt s3://fout-fox-development/allusers_pipe.txt
  • データインポート
mysql> LOAD DATA FROM S3 's3://fout-fox-development/allusers_pipe.txt'
    -> INTO TABLE users_01
    -> FIELDS TERMINATED BY '|'
    -> LINES TERMINATED BY '\n'
    -> (@var1, @var2, @var3, @var4, @var5, @var6, @var7, @var8, @var9, @var10, @var11, @var12, @var13, @var14, @var15, @var16, @var17, @var18)
    -> SET
    -> userid = @var1,
    -> username = @var2,
    -> firstname = @var3,
    -> lastname = @var4,
    -> city=@var5,
    -> state=@var6,
    -> email=@var7,
    -> phone=@var8,
    -> likesports=@var9,
    -> liketheatre=@var10,
    -> likeconcerts=@var11,
    -> likejazz=@var12,
    -> likeclassical=@var13,
    -> likeopera=@var14,
    -> likerock=@var15,
    -> likevegas=@var16,
    -> likebroadway=@var17,
    -> likemusicals=@var18;
Query OK, 49990 rows affected (8.81 sec)
Records: 49990  Deleted: 0  Skipped: 0  Warnings: 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
7