حذف psql_psql_migrator.py
هذا الالتزام موجود في:
@@ -1,47 +0,0 @@
|
|||||||
# -*- coding: utf-8 -*-
|
|
||||||
import os, subprocess, json
|
|
||||||
|
|
||||||
def update_progress(status, message, percent=0):
|
|
||||||
with open("pg_progress.json", "w") as f:
|
|
||||||
json.dump({"status": status, "message": message, "percent": percent}, f)
|
|
||||||
|
|
||||||
def migrate():
|
|
||||||
# استلام البيانات
|
|
||||||
S_HOST, S_NAME, S_USER, S_PASS = os.getenv("DB_HOST"), os.getenv("DB_NAME"), os.getenv("DB_USER"), os.getenv("DB_PASS")
|
|
||||||
T_HOST, T_NAME, T_USER, T_PASS = os.getenv("DEST_HOST"), os.getenv("DEST_NAME"), os.getenv("DEST_USER"), os.getenv("DEST_PASS")
|
|
||||||
|
|
||||||
schemas = os.getenv("ONLY_SCHEMAS", "").strip()
|
|
||||||
tables = os.getenv("ONLY_TABLES", "").strip()
|
|
||||||
|
|
||||||
filter_args = ""
|
|
||||||
# إذا تم اختيار جداول محددة، نكتفي بها
|
|
||||||
if tables:
|
|
||||||
for t in tables.split(','):
|
|
||||||
filter_args += f" -t {t.strip()}"
|
|
||||||
# إذا لم تُحدد جداول ولكن حُددت Schemas، ننقل الـ Schemas بالكامل
|
|
||||||
elif schemas:
|
|
||||||
for s in schemas.split(','):
|
|
||||||
filter_args += f" -n {s.strip()}"
|
|
||||||
|
|
||||||
update_progress("running", "بدء ضخ البيانات المختارة...", 30)
|
|
||||||
os.environ['PGPASSWORD'] = S_PASS
|
|
||||||
|
|
||||||
migrate_cmd = (
|
|
||||||
f"pg_dump -h {S_HOST} -U {S_USER} {filter_args} --clean --if-exists --no-owner {S_NAME} | "
|
|
||||||
f"PGPASSWORD={T_PASS} psql -h {T_HOST} -U {T_USER} -d {T_NAME}"
|
|
||||||
)
|
|
||||||
|
|
||||||
try:
|
|
||||||
process = subprocess.Popen(migrate_cmd, shell=True, stderr=subprocess.PIPE)
|
|
||||||
update_progress("running", "جاري نقل الهياكل والبيانات...", 70)
|
|
||||||
_, stderr = process.communicate()
|
|
||||||
|
|
||||||
if process.returncode == 0:
|
|
||||||
update_progress("completed", "نجحت عملية النقل المخصصة! ✅", 100)
|
|
||||||
else:
|
|
||||||
update_progress("error", f"خطأ: {stderr.decode()}", 0)
|
|
||||||
except Exception as e:
|
|
||||||
update_progress("error", str(e), 0)
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
migrate()
|
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم