أكثر

إنشاء نسخة احتياطية أسبوعية من FGDB لبرنامج ArcSDE؟

إنشاء نسخة احتياطية أسبوعية من FGDB لبرنامج ArcSDE؟


أحتاج إلى إنشاء برنامج نصي يقوم بنسخ بيانات طرد المقاطعة ، المحفوظة في SDE / SQL ، إلى قاعدة بيانات جغرافية للملف. سيتم تشغيل هذا البرنامج النصي كمهمة مجدولة خلال عطلة نهاية الأسبوع. ما هي أداة GP التي توصي بها لهذه العملية؟ ضع في اعتبارك أن مخططنا `` ثابت في الحجر '' وليس لدينا فئات علاقة يجب الحفاظ عليها. لقد اختبرت كلاً من CopyFeatures_management و FeatureClassToFeatureClass_conversion. كلا العملين. FC إلى FC أسرع قليلاً ، لكن السرعة ليست مشكلة في الحقيقة. نظريًا ، تتطابق ميزة CopyFeatures ، التي تعمل مع Overwrite = True ، مع سير العمل لدينا لأننا لا نقوم بالتحويل إلى ملف أشكال أو تغطية. قد يكون FeatureClassToGeodatabase_conversion هو الخيار الأفضل ، حيث يوجد حوالي 25 فئة ميزة تحتاج إلى نسخها إلى نفس FGDB.

أيضًا ، أحتاج إلى التأكد من أن الجهاز الذي يقوم بتشغيل البرنامج النصي قادر على الاتصال ببيانات SDE. نحن نستخدم DBO-schema مع مصادقة نظام التشغيل. من المحتمل أن يتم تشغيل البرنامج النصي بواسطة نفس الخادم الذي يضم SDE الخاص بنا. هل لدى أي شخص خبرة مع سيناريو مشابه؟


لقد استخدمت هذا البرنامج النصي في الماضي (تحذير ، لا ينسخ أي طبولوجيا أو فئات علاقات ، إلخ):

import arcpy، os def ExportSDEtoGDB (sde_gdb، out_loc، out_name، gdb_type = "File Geodatabase"): "يُنشئ نسخة من قاعدة بيانات SDE الجغرافية إلى ملف أو قاعدة بيانات جغرافية شخصية. سيؤدي ذلك إلى نسخ جميع الجداول ، والنقطية ، ومجموعات البيانات المميزة. الكل ستظل فئات الميزات داخل مجموعات بيانات الميزات المحترمة في قاعدة البيانات الجغرافية الجديدة. المعلمات: sde_gdb: قاعدة بيانات SDE out_loc: مجلد الإخراج لاسم قاعدة البيانات الجغرافية الجديدة: اسم قاعدة البيانات الجغرافية الجديدة gdb_type: نوع قاعدة البيانات الجغرافية. الافتراضي هو "قاعدة البيانات الجغرافية للملف" # إنشاء GDB إذا كان gdb_type == 'قاعدة البيانات الجغرافية للملف: gdb = str (arcpy.CreateFileGDB_management (out_loc، out_name،' CURRENT '). getOutput (0)) else: gdb = str (arcpy.CreatePersonalGDB_management (out_loc، out_name،' CUROutput) 0)) # loop thru sde ونسخ arcpy.env.workspace = sde_gdb للجدول في arcpy.ListTables (): t_name = table.split ('.') [- 1] arcpy.TableToGeodatabase_conversion (table، gdb) للنقطية في arcpy.ListRasters (): arcpy.CopyRaster_management (raster، os.path.join (gdb، raster)) لـ featd في arcpy.ListDatasets ('*'، 'Feature'): arcpy.env.workspace = fd = os.path.join (sde_gdb، featd) fd_name = featd.split ('.') [- 1] sr = arcpy. صف (fd) .spatialReference gdb_fd = str (arcpy.CreateFeatureDataset_management (gdb، fd_name، sr) .getOutput (0)) arcpy.AddMessage ('Created Feature Dataset:٪ s'٪ fd_name) for fc in arcpy.List fc_name = fc.split ('.') [- 1] arcpy.FeatureClassToFeatureClass_conversion (fc، gdb_fd، fc_name) arcpy.AddMessage ('نسخ كافة فئات الميزات من:٪ s  n  n'٪ featd)

يمكنك التفكير في التصدير إلى مستند مساحة عمل XML عبر أداة Export XML Workspace Document GP.

يمكنك إدخال قاعدة بيانات جغرافية ومن ثم سيتم تصدير جميع الكائنات بما في ذلك أي كائنات سلوكية. تكمن مشكلة Copy Features و FC to FC في أنها تترك الأشياء السلوكية خلفها (مثل الشبكات ، والطوبولوجيا ، وما إلى ذلك). قد لا يكون مناسبًا لك في هذه المرحلة ولكن لا يزال يستحق الذكر للرجوع إليه في المستقبل. بالإضافة إلى ذلك ، إنها أداة واحدة لقاعدة البيانات الجغرافية بأكملها بدلاً من المرور عبر كل FCs واحدًا تلو الآخر.

بالنسبة إلى تشغيل البرنامج النصي طالما أن حساب المستخدم المستخدم لديه الامتيازات المناسبة لقراءة البيانات ، فأنت على ما يرام (أي ليس بالضرورة أن يكون الحساب جزءًا من DBO). في البرنامج النصي الخاص بك ، من الأفضل أن تشير إلى ملف الاتصال الخاص بك.


شاهد الفيديو: إستخدمها صح - Google Drive