Python_scripts/6_SQL/foreign_table.py

121 lines
2.8 KiB
Python

from pycen import con
url = 'https://wxs.ign.fr/agriculture/geoportail/wfs?SERVICE=WFS&VERSION=2.0.0&REQUEST=GetCapabilities'
layer = 'RPG.2020:parcelles_graphiques.title'
wpr_name = 'rpgwfs'
tab_name = 'rpg2020_parcellaire_graphique'
drop_fgn = 'DROP SERVER IF EXISTS %s CASCADE;'%wpr_name
fgn_data_wrapper = '''
CREATE SERVER IF NOT EXISTS %s
FOREIGN DATA WRAPPER ogr_fdw
OPTIONS (datasource 'WFS:%s', format 'WFS')
'''%(wpr_name,url)
table = '''
DROP FOREIGN TABLE IF EXISTS %s;
CREATE FOREIGN TABLE IF NOT EXISTS flux_geo.%s (
id_parcel varchar,
surf_parcel float,
code_cultu varchar,
code_group varchar,
culture_d1 varchar,
culture_d2 varchar,
geom public.geometry(multipolygon, 4326)
)
SERVER %s
OPTIONS (layer '%s');
'''%(tab_name,tab_name,wpr_name,layer)
with con.begin() as cnx:
cnx.execute(drop_fgn)
with con.begin() as cnx:
cnx.execute(fgn_data_wrapper)
with con.begin() as cnx:
cnx.execute(table)
#######
#######
from pycen import con_fon as con
from sqlalchemy import text
db = 'azalee'
host = '91.134.194.221'
port = '5432'
srv_name = 'fdw_azalee'
tab_name = 'inventaire_zh'
sch_name = 'inventaires'
user = 'cen_admin'
pwd = '#CEN38@venir'
create_ext = 'CREATE EXTENSION IF NOT EXISTS postgres_fdw;'
drop_fgn = 'DROP SERVER IF EXISTS %s CASCADE;'%srv_name
fgn_data_wrapper = '''
CREATE SERVER IF NOT EXISTS %s
FOREIGN DATA WRAPPER postgres_fdw
OPTIONS (dbname '%s', host '%s', port '%s')
'''%(srv_name,db,host,port)
fgn_user_wrapper = '''
CREATE USER MAPPING IF NOT EXISTS FOR %s
SERVER %s
OPTIONS (user '%s', password '%s');
'''%(user,srv_name,user,pwd)
table = '''
CREATE FOREIGN TABLE IF NOT EXISTS {sch_name}.{tab_name} (
site_code varchar(10),
nom varchar,
auteur_site varchar,
auteur_geom varchar,
auteur_last_maj varchar,
date_site date,
date_geom date,
date_last_maj date,
type_milieu varchar,
type_site varchar,
typo_sdage varchar,
rmq_site text,
rmq_fct_majeur text,
rmq_interet_patri text,
rmq_bilan_menace text,
rmq_orient_act text,
rmq_usage_process text,
code_cb varchar,
lib_cb text,
activ_hum varchar,
impact varchar,
"position" varchar,
rmq_activ_hum text,
connexion varchar,
subm_orig varchar,
subm_freq varchar,
subm_etend varchar,
fct_bio varchar,
fct_hydro varchar,
int_patri varchar,
"val_socioEco" varchar,
crit_delim varchar,
crit_def_esp varchar,
entree_eau_reg varchar,
entree_eau_perm varchar,
entree_eau_topo varchar,
sortie_eau_reg varchar,
sortie_eau_perm varchar,
sortie_eau_topo varchar,
geom geometry(geometry,2154)
)
SERVER {fgn_server}
OPTIONS (schema_name 'zones_humides', table_name 'v_zoneshumides');
'''.format(
sch_name=sch_name, tab_name=tab_name, fgn_server=srv_name
)
with con.begin() as cnx:
cnx.execute(create_ext)
cnx.execute(drop_fgn)
cnx.execute(fgn_data_wrapper)
cnx.execute(fgn_user_wrapper)
cnx.execute(text(table))