こんにちは!中の人です。
前回に引き続き、今回もAmazon Redshift編です!
前回のレシピでは「Amazon Redshift編~CSVファイルのデータをインポートしてみよう!~」と題して、S3からのデータのインポート方法についてお話したかと思います。
今回は「Amazon Redshift編~MySQLのデータをインポートしてみよう!~」ということで、MySQLからのデータのインポート方法について説明致します。
サンプルは前回と同様に郵便番号のデータを利用します。
それでは実際に、作業をおこなっていきましょう!
事前準備
1. MySQLに対して郵便局データを登録します。
前回のCreate文でテーブル作成することができ、phpMyAdmin等からインポートすることができます。
※データが大きいので、php.iniの設定に注意してください。
2. 以下のコマンドでTSV形式で出力します。
1 |
mysql –u [ユーザ名] -p -N –e "SELECT * FROM postcode" [データベース名] > /tmp/mysql.tsv |
※Nオプションを付けないと1行目に項目名が追加されエラーになるのでご注意を。
3. 出力したデータをS3に対してアップロードします。
テーブルの作成
4. ここからはRedshiftに対する操作です。
SQL Workbenchを起動させ、Redshiftに対して接続します。
※前回と同様に、SQL Workbenchのインストールと接続については以下の「Redshiftをはじめてみよう!」のレシピを参照してください。
■ Amazon Redshift編~Redshiftをはじめてみよう!~パート①~
■ Amazon Redshift編~Redshiftをはじめてみよう!~パート③~
郵便番号情報用にテーブルを作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
create table postcode( dancode varchar(10), oldpost varchar(5), newpost varchar(7), state_kana varchar(200), city_kana varchar(200), area_kana varchar(200), state_kanji varchar(200), city_kanji varchar(200), area_kanji varchar(200), etc01 boolean , etc02 boolean , etc03 boolean , etc04 boolean , etc05 smallint, etc06 smallint ); |
※ なお、前回作成済みであれば、この手順では以下のようにいたします。
01: 「Database Explorer 2」のテーブル”postcode”上で右クリックし、「Delete data…」を選択します。
02: 削除確認の画面が表示されますので、「Delete」をクリックします。
データのインポート
1 |
copy postcode from 's3://[s3-backet名]/mysql.tsv' CREDENTIALS 'aws_access_key_id=[your access key];aws_secret_access_key=[your secret access key]' delimiter '\t'; |
○前回との変更点
delimiter ‘\t’ | タブ区切りなので’\t’を指定します。 |
REMOVEQUOTES | 囲み文字は無いので、今回は不要です。 |
データの確認
前回同様、件数も含めて同じデータが反映されていることが確認できます。
いかがでしたでしょうか?
MySQLからのデータのインポートも上記のように簡単におこなうことができますので是非、試してみてください!
次回は「Amazon Redshift編~複数ファイルを一括インポートしてみよう!~」と題して、複数ファイルを一括でインポートする方法を紹介させていただきます。
お楽しみに!