pythonからpostgresqlにsqlファイルを実行しまくる
sqlファイルを全部処理したい
postgresqlにsqlを順番に実行したいとき、一々一個ずつ実行するのはだるいですよね。 まとめて実行するプログラムを書きました。
- 作者: 笠原辰仁,北川俊広,坂井潔,坂本昌彦,佐藤友章,石井達夫
- 出版社/メーカー: 翔泳社
- 発売日: 2011/02/02
- メディア: 大型本
- 購入: 3人 クリック: 28回
- この商品を含むブログ (6件) を見る
- 作者: Bill Lubanovic,斎藤康毅,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2015/12/01
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (3件) を見る
ご査収ください。
# 必要なライブラリのインポート from sqlalchemy import create_engine from glob import glob from datetime import datetime from sqlalchemy import text # sqlファイル読み込み sql_files = glob(".\sql\*.sql") # DBの接続設定 db_kind = "postgresql" dbschema = "hoge_shcema" user = "hoge_user" password = "hoe_password" server = "1.2.3.4" port = "5432" db_name = "hoge_database" # DB接続文字列 con_str = db_kind + "://" + user + ":" + password + "@" + server + ":" + port + "/" + db_name # DB接続 engine = create_engine(con_str, echo=True, connect_args={"options": "-csearch_path={}".format(dbschema)}) # SQL実行 for sql_file in sql_files: print(datetime.now().strftime("%Y/%m/%d %H:%M:%S") + " :" + sql_file + " exec start") with open(sql_file,"r") as f: f = open(sql_file) sql = f.read() engine.execute(text(sql)) print(datetime.now().strftime("%Y/%m/%d %H:%M:%S") + " :" + sql_file + " exec end")
これで.\sql\フォルダにある全SQLを名前ソート順に実行してくれます。
ざっつおーる。せんきゅー。