GCSに配置されているCSVをPythonのClientライブラリを利用して
MySQLへインポートしたいと思っています。
GCSもPythonも利用は初めてなので調べながら実装していたのですが、
GCSからCSVファイルを参照した後、MySQLへ取り込む方法がイマイチわからずご教授いただければ幸いです。
python
1import google.cloud from storage 2import google.oauth2 from service_account 3import os 4import json 5import csv 6 7# GCS認証関連 8key_path = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'credentials.json') 9service_account_info = json.load(open(key_path)) 10credentials = service_account.Credentials.from_service_account_info(service_account_info) 11client = storage.Client( 12 credentials=credentials, 13 project=credentials.project_id, 14) 15 16# BLOB参照関連 17bucket_name = '<BUCKET_NAME>' 18blob_name = '<BLOB_NAME>' #CSVファイル 19bucket = client.bucket(bucket_name) 20blob = bucket.blob(blob_name) 21 22print(blob.exits()) #True 23 24↓ 25 26#CSVパース 27 28↓ 29 30#MySQL挿入関連
上記までで存在確認まではできたのですが、このCSVをパースしてMySQLに取り込むまでのフローがわからず詰まっているという状況です。
python
1#上記の続きから 2 3blob.download_to_filename(blob_name) #ファイルでダウンロード 4 5with open(blob_name, newline='') as f: 6 read = csv.reader(f) 7 for row in read: 8 print('---------->') 9 print(row) #['aaaaa', 'bbbbb', 'ccccc'] 10 11 #一行ずつMySQLへ挿入 12 13 #挿入が全て終わったら生成したファイルを削除
一応上記のような処理でうまくいきそうなのですが、一度ファイルをローカルに作成するなどどうもスマートではない気がしていて、、、(くだらないこだわりかもしれないですが)
BLOB関連のメソッドには他にも
- blob.download_as_string
- blob.download_blob_to_file
など見つけたのですが、いまいち使い方が理解できない状況です。
前提条件(GCS上のCSVをMySQLへ取り込む)を満たせればどんな書き方でも構わないので知見がある方、ご教授いただけると幸いです。
以上、よろしくお願いいたします。
あなたの回答
tips
プレビュー