Amazon Redshift編~複数ファイルを一括インポートしてみよう!~

**

1. http://www.post.japanpost.jp/zipcode/dl/oogaki.html

上記URLより「01hokkai.lzh」~「10hokkai.lzh」をダウンロードし、解凍します。

2. 回答したファイルをテキストエディタで開き、UTF-8N

のフォーマットで保存します。

※日本語を扱う場合は必ずUTF-8Nで保存する必要があります。

  1. 以下のコマンドをTSV形式で出力します。
1「mysql –u [ユーザ名] -p -N –e "SELECT * FROM postcode" [データベース名] > /tmp/mysql.tsv」2※Nオプションで項目名が表示されなくなります。
  1. 出力したデータをRedshiftと同じリージョンのS3に対してアップロードします。

**

テーブルの作成

**

  1. ここからはRedshiftに対する操作です。

SQL Workbenchを起動させ、Redshiftに対して接続します。

※前回と同様、SQL Workbenchのインストールと接続については以下の「Redshiftをはじめてみよう!」のレシピを参照してください。

■ Amazon Redshift編~Redshiftをはじめてみよう!~パート①~

■ Amazon Redshift編~Redshiftをはじめてみよう!~パート③~

郵便番号情報用にテーブルを作成します。

1create table postcode(2	dancode varchar(10),3	oldpost varchar(5),4	newpost varchar(7),5	state_kana varchar(200),6	city_kana varchar(200),7	area_kana varchar(200),8	state_kanji varchar(200),9	city_kanji varchar(200),10	area_kanji varchar(200),11	etc01 boolean ,12	etc02 boolean ,13	etc03 boolean ,14	etc04 boolean ,15	etc05 smallint,16	etc06 smallint17);
20130610_01_01
**

データのインポート

**

1copy postcode from 's3://[s3-backet名]/ ' CREDENTIALS 'aws_access_key_id=[your access key];aws_secret_access_key=[your secret access key]' delimiter '\t';
20130610_01_02

○ 前回との変更点

copy [インポート先のtable] from ‘[インポートするバケット名 または ディレクトリ名]’ インポートするバケット名/ディレクトリ名とデータ保存先のテーブルを指定します。

参照先をファイルからディレクトリに変更することで、ディレクトリにあるファイル一覧を読み取りインポートされます。

注意点としては、すべてのファイルがインポートできるフォーマットであるということです。

**

データの確認

**

  1. データの確認として以下を実行してみます。

select * from postcode where state_kanji = ‘栃木県’

20130610_01_03

栃木県の登録データ 1831件がヒットしたことが確認できます。

いかがでしたでしょうか?

このようにバケット名・ディレクトリを指定することで、配下にあるファイルを一括して読み込むことができます。

例えば、複数あるアクセスログを一括してRedshiftにインポートするときなどに活用できます。

次回は「Amazon Redshift編~圧縮ファイルをインポートしてみよう!~」というタイトルで全国の郵便番号データを圧縮してインポートする方法を紹介します。

お楽しみに!

この記事を書いた人

aws-recipe-user