校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 如何為PostgreSQL的表自動添加分區

如何為PostgreSQL的表自動添加分區

熱門標簽:漯河外呼電話系統 打電話智能電銷機器人授權 海豐有多少商家沒有地圖標注 美容工作室地圖標注 辦公外呼電話系統 合肥公司外呼系統運營商 外呼調研系統 重慶自動外呼系統定制 地圖標注和圖片名稱的區別

PostgreSQL 引進“分區”表特性,解放了之前采用“表繼承”+ “觸發器”來實現分區表的繁瑣、低效。而添加分區,都是手動執行 SQL。

演示目的:利用 python 來為 PostgreSQL 的表自動添加分區。

python版本: python3+

pip3 install psycopg2

一、配置數據源

database.ini 文件:記錄數據庫連接參數

[adsas]
host=192.168.1.201
database=adsas
user=adsas
password=adsas123
port=5432
[test]
host=192.168.1.202
database=adsas
user=adsas
password=adsas123
port=5432

二、config 腳本

config.py 文件:下面的config() 函數讀取database.ini文件并返回連接參數。config() 函數位于config.py文件中

#!/usr/bin/python3
from configparser import ConfigParser
 
def config(section ,filename='database.ini'):
  # create a parser
  parser = ConfigParser()
  # read config file
  parser.read(filename)
 
  # get section, default to postgresql
  db = {}
  if parser.has_section(section):
    params = parser.items(section)
    for param in params:
      db[param[0]] = param[1]
  else:
    raise Exception('Section {0} not found in the {1} file'.format(section, filename))
 
  return db

三、創建子表腳本

pg_add_partition_table.py 文件:其中 create_table函數是創建子表SQL。其中參數

參數名 含義
db 指向數據庫
table 主表
sub_table 正要新建的子表名
start_date 范圍分界開始值
end_date 范圍分界結束值

#!/usr/bin/python3
import psycopg2
from config import config
# example: create table tbl_game_android_step_log_2021_07 PARTITION OF tbl_game_android_step_log FOR VALUES FROM ('2021-07-01') TO ('2021-08-01');
def create_table(db, table, sub_table, start_date, end_date):
  """ create subtable in the PostgreSQL database"""
  command = "create table {0} PARTITION OF {1} FOR VALUES FROM ('{2[0]}') TO ('{2[1]}');".format(sub_table, table, (start_date, end_date)) 
  conn = None
  try:
    # read the connection parameters
    params = config(section = db)
    # connect to the PostgreSQL server
    conn = psycopg2.connect(**params)
    cur = conn.cursor()
    # create table one by one
    cur.execute(command)
    # close communication with the PostgreSQL database server
    cur.close()
    # commit the changes
    conn.commit()
  except (Exception, psycopg2.DatabaseError) as error:
    print(error)
  finally:
    if conn is not None:
      conn.close()

四、執行文件main.py

main.py:主文件;通過執行main生成分區表。

示例:

#!/usr/bin/python3
import datetime
from datetime import date
from dateutil.relativedelta import *
from pg_add_partition_table import create_table
# Get the 1st day of the next month
def get_next_month_first_day(d):
  return date(d.year + (d.month == 12), d.month == 12 or d.month + 1 , 1)
  
def create_sub_table(db, table):
  # Get current date
  d1 = date.today()
  # Get next month's date
  d2 = d1 + relativedelta(months=+1)
  # Get the 1st day of the next month;As the starting value of the partitioned table
  start_date = get_next_month_first_day(d1)
  # Gets the 1st of the next two months as the end value of the partitioned table
  end_date = get_next_month_first_day(d2)
  # get sub table name
  getmonth = datetime.datetime.strftime(d2, '%Y_%m')
  sub_table = table + '_' + getmonth
  create_table(db, table, sub_table, start_date, end_date)
	
if __name__ == '__main__':
  create_sub_table('test', 'tbl_game_android_step_log');

上面示例單獨為表tbl_game_android_step_log;創建分區;若多個表;用for語句處理

 # 多表操作
  for table in ['tbl_game_android_step_log', 'tbl_game_android_game_log','tbl_game_android_pay_log']:
    create_sub_table('test', table);

]

演示之前:

adsas=> select * from pg_partition_tree('tbl_game_android_step_log');
        relid        |    parentrelid    | isleaf | level 
-----------------------------------+---------------------------+--------+-------
 tbl_game_android_step_log     |              | f   |   0
 tbl_game_android_step_log_2020_12 | tbl_game_android_step_log | t   |   1
(2 rows)

演示之后:

adsas=> select * from pg_partition_tree('tbl_game_android_step_log');
        relid        |    parentrelid    | isleaf | level 
-----------------------------------+---------------------------+--------+-------
 tbl_game_android_step_log     |              | f   |   0
 tbl_game_android_step_log_2020_12 | tbl_game_android_step_log | t   |   1
 tbl_game_android_step_log_2021_01 | tbl_game_android_step_log | t   |   1
Partition key: RANGE (visit_time)
Partitions: tbl_game_android_step_log_2020_12 FOR VALUES FROM ('2020-12-01 00:00:00') TO ('2021-01-01 00:00:00'),
      tbl_game_android_step_log_2021_01 FOR VALUES FROM ('2021-01-01 00:00:00') TO ('2021-02-01 00:00:00')

五、加入定時任務

到此這篇關于如何為PostgreSQL的表自動添加分區的文章就介紹到這了,更多相關PostgreSQL的表添加分區內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • PostgreSQL LIST、RANGE 表分區的實現方案
  • PostgreSQL 創建表分區
  • 淺析postgresql 數據庫 TimescaleDB 修改分區時間范圍
  • 利用python為PostgreSQL的表自動添加分區
  • 淺談PostgreSQL 11 新特性之默認分區
  • PostgreSQL之分區表(partitioning)
  • PostgreSQL分區表(partitioning)應用實例詳解
  • PostgreSQL教程(三):表的繼承和分區表詳解
  • 淺談PostgreSQL表分區的三種方式

標簽:晉城 衡陽 株洲 錦州 烏海 珠海 來賓 蚌埠

巨人網絡通訊聲明:本文標題《如何為PostgreSQL的表自動添加分區》,本文關鍵詞  如,何為,PostgreSQL,的,表,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何為PostgreSQL的表自動添加分區》相關的同類信息!
  • 本頁收集關于如何為PostgreSQL的表自動添加分區的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    日韩福利视频网| 亚洲人成7777| 欧美一二区视频| 色久综合一二码| av激情成人网| av中文字幕亚洲| 91视频在线观看免费| 91视频国产资源| 欧洲激情一区二区| 欧美婷婷六月丁香综合色| 欧美三级乱人伦电影| 欧美日韩情趣电影| 欧美一区二区福利视频| 欧美岛国在线观看| 欧美国产成人精品| 亚洲欧美一区二区三区久本道91 | 夜夜亚洲天天久久| 亚洲一区二区三区四区的| 亚洲午夜一区二区| 天天综合天天做天天综合| 美国欧美日韩国产在线播放| 秋霞国产午夜精品免费视频| 视频在线观看一区| 免费观看在线色综合| 另类欧美日韩国产在线| 国内精品免费在线观看| 国产99久久久国产精品免费看| 91视频国产资源| 欧美一级在线观看| 亚洲欧洲日韩av| 天堂av在线一区| 精品在线观看免费| 99久久亚洲一区二区三区青草| 色94色欧美sute亚洲13| 在线综合+亚洲+欧美中文字幕| 久久综合久久综合亚洲| 国产精品久久久久天堂| 亚洲电影在线免费观看| 美女高潮久久久| 99re成人在线| 日韩午夜av电影| 一区二区三区在线视频观看| 精品一区二区在线视频| 91麻豆国产香蕉久久精品| 日韩欧美中文字幕制服| 最近中文字幕一区二区三区| 蜜桃久久久久久久| 欧美综合天天夜夜久久| 久久久久久久一区| 日本中文字幕一区| 色综合久久久久久久久久久| www激情久久| 午夜不卡在线视频| eeuss鲁片一区二区三区 | 国产精品一级片在线观看| 欧美性猛交一区二区三区精品| 国产日韩精品一区| 久久国产精品色婷婷| 欧美日韩国产系列| 亚洲精品成人在线| av中文字幕在线不卡| 国产日产欧产精品推荐色| 国产麻豆成人精品| 精品久久久久一区二区国产| 日韩成人dvd| 欧美福利一区二区| 婷婷中文字幕一区三区| 在线亚洲+欧美+日本专区| 国产精品久久久久久久岛一牛影视| 麻豆国产精品视频| 日韩一区二区三区免费看| 午夜欧美视频在线观看| 欧美日韩中字一区| 亚洲成精国产精品女| 91久久国产综合久久| 亚洲精品亚洲人成人网| 色久优优欧美色久优优| 亚洲一区免费观看| 欧美网站大全在线观看| 亚洲美女精品一区| 欧美在线免费播放| 亚洲成人综合网站| 4438x成人网最大色成网站| 无吗不卡中文字幕| 欧美一级一级性生活免费录像| 日本va欧美va瓶| 26uuu精品一区二区| 国产精品66部| 亚洲精品日韩专区silk| 在线观看国产一区二区| 亚洲不卡av一区二区三区| 欧美久久免费观看| 欧美aⅴ一区二区三区视频| 欧美成人综合网站| 懂色一区二区三区免费观看| 国产精品视频看| 在线观看欧美日本| 蜜臀精品一区二区三区在线观看| 欧美一级爆毛片| 成人午夜精品在线| 一区二区免费看| 精品久久久久久久久久久久久久久久久 | 五月天激情综合| 日韩欧美区一区二| 国产酒店精品激情| 亚洲女厕所小便bbb| 91精品一区二区三区在线观看| 精久久久久久久久久久| 欧美激情综合网| 一本高清dvd不卡在线观看| 亚洲福中文字幕伊人影院| 欧美成人精精品一区二区频| 不卡视频在线看| 亚洲一区在线播放| 欧美一区二区三区思思人| 国产盗摄精品一区二区三区在线| 亚洲综合在线视频| 久久精品人人做人人爽人人| 日本韩国精品一区二区在线观看| 麻豆成人av在线| 夜夜嗨av一区二区三区中文字幕| 欧美videossexotv100| 91成人看片片| 成人视屏免费看| 激情小说亚洲一区| 亚洲欧美日韩久久精品| 日本一区二区三区国色天香| 欧美精品tushy高清| 成人av电影免费观看| 国精品**一区二区三区在线蜜桃| 亚洲综合一区在线| 亚洲欧洲三级电影| 欧美国产日韩在线观看| 日韩一级二级三级精品视频| 欧美在线不卡视频| 91视频在线观看| 92精品国产成人观看免费| 国产精品一区二区你懂的| 久久黄色级2电影| 日韩—二三区免费观看av| 亚洲成人自拍一区| 亚洲综合久久久久| 亚洲精品欧美激情| 中文字幕一区二区三区乱码在线| 久久久国产午夜精品| 精品国产凹凸成av人网站| 91精品国产综合久久久久久| 欧美日韩久久一区| 欧美丝袜自拍制服另类| 欧美探花视频资源| 欧美日韩色一区| 在线综合视频播放| 日韩一卡二卡三卡国产欧美| 91精品国产麻豆国产自产在线| 欧美无人高清视频在线观看| 欧美色老头old∨ideo| 在线观看亚洲专区| 欧美日韩国产系列| 日韩欧美区一区二| 国产亚洲自拍一区| 欧美激情综合在线| 亚洲精品视频一区二区| 亚洲成人动漫精品| 奇米影视在线99精品| 久久国产精品色婷婷| 国产精品中文有码| av激情综合网| 欧美综合天天夜夜久久| 3atv一区二区三区| 精品99一区二区| 国产精品麻豆久久久| 亚洲成人一区二区在线观看| 婷婷久久综合九色国产成人| 国内精品伊人久久久久av影院| 国产福利一区二区三区视频在线| hitomi一区二区三区精品| 欧美色视频在线| 久久久欧美精品sm网站| 自拍偷拍国产亚洲| 日韩av成人高清| 懂色av一区二区三区免费观看| 在线一区二区视频| 精品国产精品网麻豆系列 | 在线观看国产一区二区| 7777精品久久久大香线蕉| 精品成人免费观看| 亚洲色图欧美偷拍| 日本大胆欧美人术艺术动态| 成人免费精品视频| 91精品国产综合久久香蕉麻豆| 中文字幕不卡三区| 丝袜美腿亚洲综合| 盗摄精品av一区二区三区| 欧美片网站yy| 中文成人av在线| 免费一区二区视频| 在线国产亚洲欧美| 国产精品理论片| 国产在线国偷精品产拍免费yy| 色婷婷综合久久|