Cloud SQLの利用

Cloud Storageに入れたデータを、Cloud SQLで処理する方法


参考サイト(書籍)


Cloud SQLインスタンスの作成方法

  1. GCPのコンソールからStorage の SQLを選択
  2. 「インスタンスを作成」をクリック
  3. データベースエンジンを選択する(MySQLは、Ver5系のみでVer8は選べない)
  4. インスタンスID、パスワード、ロケーションを選択して、作成クリック
  5. 後は、作成したSQLインスタンスにテーブルを作成して、データ送る。


作成したSQLインスタンスにテーブルを作成する方法

      • ここでは、テーブルを作成するsqlを記入したファイルを用意して、Cloud Shellから実行する方法について
      • MySQLに入れるデータは、Cloud Storageに入れた12個のcsvファイル(中身は、米国航空データ)
      • SQLインスタンス名は、flights-data

方法:

  1. テーブル作成するsql文を書いたファイル用意
     作成した「create_table.sql」ファイル
       データベース名:bts

  1. クライアント側に、MySQLクライアントをインストール(以下は、ubuntu)

    sudo apt-get update

    sudo apt-get install mysql-server

  2. 自分のPCのipアドレスを確認してパブリックipに登録
    cloud shell のパブリックIPアドレスは、以下のコマンドで確認して登録必要
    > curl ifconfig.me

  3. 作成したSQLインスタンスのipアドレス確認して、sqlファイル渡してテーブルの作成
    MYSQLIP=$(gcloud sql instances describe flights-data --format="value(ipAddresses.ipAddress)")
    で、MySQLのIPアドレスが返ってくるので、それを変数に保存して使えば良い。
    mysql --host=$MYSQLIP --user=root --password --verbose < create_table.sql

  4. テーブルできたか確認
    user bts; # データベース接続
    describe flights; # テーブル定義確認


作成したテーブルに、cloud storageのデータを入れる

※ cloud storageからsqlimport で直接読み込めないので、一旦ファイルをcloud shellのローカルに落とす必要がある。なので、ファイル数少ない時は、GUI上でインポートした方が簡単!

  1. cloud storateの対象バケットからデータをcloud shell に入れる。
    例) 201501.csvファイルと201507.csvファイルを名称変えてバケットからcloud shellにコピー
     counter=0
     for FILE in 201501.csv 201507.csv; do
     gsutil cp gs://バケット名/ディレクトリ名/$FILE flights.csv-${counter}
     counter=$((counter+1))
     done
     で、cloud shellのローカルにflights.csv-0とflights.csv-1ファイルが出来る。 

  2. mysqlimport コマンド上記2ファイルのデータを対象テーブルに入れる
    mysqlimport --local --host=$MYSQLIP --user=root --password --ignore-lines=1 --fields-terminated-by=',' bts flights.csv-*
    ※ --ignore-lines=1 でファイルの1行目を無視(ヘッダーフィールド)

  3. テーブルにデータ入ったかクエリかけて確認

機械学習Tips保管庫

データ解析、機械学習のための学習内容の保管庫。復習用。

0コメント

  • 1000 / 1000