如何用Python指令碼自動建立多張表
阿新 • • 發佈:2019-01-29
今天有個任務,將伺服器上MySQL中的100張表一億條資料資料遷移到es中,
因為MySQL和es都是在生產環境中的,不敢亂動啊,萬一搞錯了就完蛋了,
我只能在本地測試,第一個要解決的問題就是,模擬出MySQL的具有相同表結構的100張表
好在表的名字是有規律的xxxxx_1、xxxxx_2、xxxxx_3、......xxxxx_100、
剛開始我用手動的方式寫了2個,太慢了,於是結合Python搞一搞
這裡需要準備兩個檔案
1、用於儲存建立表語句的sql檔案(比如create_table.sql)
在sql檔案中稍作修改,將建立語句
CREATE TABLE `xxxxx_1` (後面省略,根據自己需求建立
表名中的遞增的序號改為一個字串(在sql檔案中需要具有唯一性),比如lihaizhen(這是我的名字,肯定唯一),然後儲存。
2、py檔案(比如create_table.py)
import pymysql import time with open("creat_tables.sql", "r", encoding='utf8')as f: content = f.read() sql_str = content def write_into_mysql(): try: conn = pymysql.connect( host, user, password, database, port, charset='utf8', ) cur = conn.cursor() for i in range(1, 101): sql = sql_str.replace('lihaizhen', str(i), 1) cur.execute(sql) conn.commit() print('建立第{}張表'.format(i)) except Exception as e: print(e) if __name__ == '__main__': s_t = time.time() write_into_mysql() e_t = time.time() print(e_t - s_t)
ok,大功告成
只需等待一分鐘收穫100張表