Files
Neo-ZQYY/scripts/ops/fix_fdw_test.py

65 lines
1.8 KiB
Python
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# -*- coding: utf-8 -*-
"""
修复 test_zqyy_app 的 FDW
1. 为 local-Python 添加 user mappingIMPORT 需要当前用户有映射)
2. 重新 IMPORT FOREIGN SCHEMA
"""
import psycopg2
CONN = dict(host="100.64.0.4", port=5432, user="local-Python", password="Neo-local-1991125")
conn = psycopg2.connect(**CONN, dbname="test_zqyy_app")
conn.autocommit = True
cur = conn.cursor()
steps = [
# 为执行用户添加 user mapping用超级用户身份连远程库
(
"CREATE USER MAPPING IF NOT EXISTS FOR \"local-Python\" "
"SERVER test_etl_feiqiu_server "
"OPTIONS (user 'local-Python', password 'Neo-local-1991125')",
"添加 local-Python user mapping"
),
# 导入外部表
(
"IMPORT FOREIGN SCHEMA app FROM SERVER test_etl_feiqiu_server INTO fdw_etl",
"导入 test_etl_feiqiu.app 外部表"
),
]
for sql, label in steps:
try:
cur.execute(sql)
print(f"[OK] {label}")
except Exception as e:
conn.rollback()
msg = str(e).strip().split("\n")[0]
print(f"[FAIL] {label}: {msg}")
# 验证
cur.execute(
"SELECT count(*) FROM information_schema.tables "
"WHERE table_schema = 'fdw_etl'"
)
count = cur.fetchone()[0]
print(f"\n验证: fdw_etl 外部表数 = {count}")
# 同时给 zqyy_app 也加上 local-Python mapping方便调试
conn.close()
conn = psycopg2.connect(**CONN, dbname="zqyy_app")
conn.autocommit = True
cur = conn.cursor()
try:
cur.execute(
"CREATE USER MAPPING IF NOT EXISTS FOR \"local-Python\" "
"SERVER etl_feiqiu_server "
"OPTIONS (user 'local-Python', password 'Neo-local-1991125')"
)
print("[OK] zqyy_app: 添加 local-Python user mapping")
except Exception as e:
msg = str(e).strip().split("\n")[0]
print(f"[SKIP] zqyy_app: {msg}")
conn.close()
print("\n完成!")