#!/usr/bin/env python3 # -*- coding: UTF-8 -*- from sqlalchemy.sql import text from sqlalchemy.engine import URL from sqlalchemy import create_engine import pandas as pd import geopandas as gpd # pg_dump -h 91.134.194.221 -d cadastre -U cgeier --schema="38_202207" -s > 38_202207.sql # psql -h 91.134.194.221 -U cgeier -d cadastre -a -f 38_202207.sql user = 'cgeier' pwd = 'adm1n*bdCen' adr = '91.134.194.221' base = 'cadastre' url = URL.create('postgresql+psycopg2', username=user, password=pwd, host=adr, database=base, ) con_cad = create_engine(url) lst_sch = con_cad.dialect.get_schema_names(con_cad) lst_sch = ['07_202207','26_202207','42_202207'] for s in lst_sch: lst_tab = con_cad.dialect.get_table_names(con_cad,s) for t in lst_tab: lst_col = con_cad.dialect.get_columns(con_cad,t,s) lst_col = [x['name'] for x in lst_col ] if 'geom' in lst_col: df = gpd.read_postgis('SELECT * FROM "{sch}".{tab}'.format(sch=s,tab=t),con_cad) if df.empty: continue df.to_postgis(t,con_cad,'xx_202207',if_exists='append',index=False) else : df = pd.read_sql_table(t,con_cad,s) if df.empty: continue df.to_sql(t,con_cad,'xx_202207',if_exists='append',index=False) print("{sch}.{tab}".format(sch=s,tab=t))