在准备环境前提交次全部更改。
This commit is contained in:
64
scripts/ops/fix_fdw_test.py
Normal file
64
scripts/ops/fix_fdw_test.py
Normal file
@@ -0,0 +1,64 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
修复 test_zqyy_app 的 FDW:
|
||||
1. 为 local-Python 添加 user mapping(IMPORT 需要当前用户有映射)
|
||||
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完成!")
|
||||
Reference in New Issue
Block a user