أكثر

تحويل csv إلى dbf

تحويل csv إلى dbf


لقد قمت بإنشاء ملف بيثون بتنسيق CSV أتطلع إلى تحويله إلى dbf ولكن لا يتم قراءته بشكل صحيح بواسطة أداة التحويل TABLE TO TABLE. حدد ملف csv ، وقم بتعيين الإخراج ليكون XXX.dbf ولكن الإخراج يحتوي على حقل واحد. يحتوي على عدد الصفوف التي أحتاجها ، لكن قيم كل صف هي البيانات المفصولة بفاصلة. ليس لدي مسافات أو أحرف خاصة.

Arcgis 10.1.1 تحديث

هذا هو PYTHON المستخدم لإنشاء الجدول. هذه هي المرة الأولى التي أستخدم فيها كاتب CSV ؛ ربما أقوم بتنفيذها بشكل خاطئ لإطعام dbf.

# هذا البرنامج النصي يبحث في مجلد محدد لملفات الأشكال وينشئ بدايات قاموس البيانات. # المنشئ: ديفيد كامبل # التاريخ: 12 مارس 2015 استيراد arcpy ، نظام التشغيل ، sys ، csv ، التاريخ والوقت ، الوقت من استيراد arcpy ، طباعة "Start @" + datetime.datetime.fromtimestamp (time.time ()). strftime (' ٪ H:٪ M:٪ S ') ############################ project =' P747 'TSA_Table =' TSA_LB_V2 'CLS_Table = 'CLS_LB_V2' MDL_Table = 'MDL_LB_V2' ARIS_Table = 'ARIS_V5' RSA_Table = 'RSABLKS_V5' AVI_Table = 'AVI_ATTR_V2' FolderLocation = r " silver  clients  Projects  P747  3_Landbase  LB1  Submission_50 = "C:  Users  david  AppData  تجوال  ESRI  Desktop10.1  ArcCatalog  TFC.sde " Project_DB = "C:  Users  david  AppData   التجوال  ESRI  Desktop10.1  ArcCatalog  P747.sde  "ORA = 'ORATFC01' ######################## ############### open (os.path.join (FolderLocation، "DD.csv")، "w") FCView = FolderLocation + " FCView.lyr" env.workspace = FolderLocation SDELOC = SDELocal إذا كان arcpy موجودًا (FolderLocation + " DD.csv"): arcpy.Delete_management (FolderLocation + " DD.csv ") # if arcpy.Exists (SDELOC +" DD_Table ") == False: # print" SDE Table غير موجود "إذا كان arcpy موجودًا (SDELOC +" DD_Table "): arcpy.Delete_management (SDELOC +" DD_Table ") إذا كان arcpy.Exists (SDELOC +" DD_Table ") == صحيح: طباعة" True "sys.exit () a =" ID ، PROJECT_NO ، DATA_NAME ، DATA_TYPE ، DATA_LOCATION ، SOURCE_CONTACT_NAME ، PROJECTION ، DATUM ، UNITS ، DATA_PRECISION ، TOLERANCE ، SCALE_OF_CAPTURE ، GENERATION_ORIGIN ، FEATURE_DESC ، COLUMN_NAME ، FLDTYPE_NAME ، COLUMN_WIDTH ، COLUMN_DECIMAL ، COLUMN_DESC "csvfile = FolderLocation +"  DD.csv "allrows = [CLUMN_NAME ، AVLows.able (a) ، RSA_Table] #SDETable = ['TSA_LB_V2'، 'CLS_LB_V2'، 'MDL_LB_V2'، 'ARIS_V5'، 'RSABLKS_V5'، 'AVI_ATTR_V2'] x = 1 لـ r في arcpy.ListFiles ("*. shp"): if .Exists (FCView): arcpy.Delete_management (FCView) arcpy.MakeTableView_management (r، FCView) الحقول = arcpy.ListFields (r) desc = arcpy.Describe (r) للمجال في الحقول: FN = field.name DataString = str ( x) + "،" + project + "،" + r + "،" + desc.shapeType + "،" + FolderLocation + "،" + "،" + desc.spatialReference.name + "،" + desc.spatialReference.GCS.datumName + "،" + "Meters" + "،" + " ، "+" ، "+" ، "+" ، "+" ، "+ FN +" ، "+ field.type +" ، "+ str (field.length) +" ، "+ str (field.precision) if field.type in ('String'، 'SmallInteger'): UniqueValues ​​= Sorted (set ([XX [0] for XX في arcpy.da.SearchCursor (FCView، FN)])) إذا كان int (len (UniqueValues)) > = LargestNumberForUniqueValues: b = DataString + "، قيم المتغير" allrows.append (b) x + = 1 if int (len (UniqueValues))  = LargestNumberForUniqueValues: f = ORASDEString + "، قيم متغيرة" allrows.append (f) x + = 1 if int (len) (UniqueValues2)) 

لديك علامات اقتباس في بداية كل سطر ونهايته ، ولا يوجد بينهما ، لذلك يقوم ArcGIS بتفسير كل سطر على أنه حقل نص واحد. قم بإزالة علامات الاقتباس ويجب أن تكون على ما يرام في قراءة الملف.

وإلا إذا كنت تريد حلاً برمجيًا لإنشاء ملف DBF ، فألق نظرة على Python دبفوحدة لكتابة ملف DBF. استخدامdbf.from_csvسيحول بسرعة ملف CSV إلى ملف DBF في الذاكرة مع

الجدول = dbf.from_csv (المسار)

أو الكتابة مباشرة إلى ملف بامتداداسم الملفمعامل

dbf.from_csv (المسار ، "out_path.dbf")

من غير المحتمل أن يفعل هذا بالضبط ما تريده على الرغم من أنه يفترض أن الصف الأول من CSV ليس رؤوسًا ، بل بيانات ، وأن جميع الحقول عبارة عن حقول سلسلة. لشيء أكثر تعقيدًا ، يجب أن تعمل باستخدام لغة Python المدمجة csvوحدة لقراءة البيانات ، وتحديد تنسيق الجدول بنفسك قبل كتابة البيانات.


أحد الاحتمالات هو فتح ملف .csv في Excel أو شيء مشابه ، وحفظه في الحقول المنفصلة ، ثم فتحه مرة أخرى داخل ArcMap. يجب أن تكون الحقول الخاصة بك منفصلة داخل جدول .dbf الخاص بك على أمل


شاهد الفيديو: DBF converter editor, DBF Конвертер Dos-Win + Редактор