2009-03-16 16 views
2

Ich arbeitete jetzt mit ESRI Shapefile-Format und ich habe ein Problem mit dem Ändern/Bearbeiten der Datenbankfeldgröße. Ich habe ein Feld mit 200 Länge/Größe erstellt und jetzt möchte ich es nur 80 Länge/Größe (Raum & andere Verbesserung).Ändern der DBF-Feldgröße

aber ich kann nicht mehr Feldgröße bearbeiten :(kann jemand darauf hinweisen, wie die Feldgröße zu ändern?

Btw Ich habe versucht, Dienstprogramme wie DBF Explorer, die Feldgröße bearbeiten können, aber wenn ich Feld ändern Größe auf char/Textfeld Daten auf float/numerisches Feld gelöscht werden :(
DBF Explorer

PS: ESRI Datenbank Verwendung DBF-Erweiterung, die ich denke, es DBASE III plus oder dBASE IV-Format

Antwort

1

Sie können den Header der Datei bearbeiten, um sie mit einem beliebigen hexadezimalen Editor zu ändern.

Byte 10-11: repräsentiert die lenth eines Datensatzes (least significant byte zuerst)

bei Byte 48 eine wiederholte Struktur (48 Bytes pro Stück) beschreibt das Feld beginnt. Das Byte 33 dieser Struktur repräsentiert die Länge.

+0

Hex-Editor klingt gut, hoffe, es wird nicht ruinieren Daten, die bereits drin, ich werde es versuchen, danke: D – Dels

+0

nur neugierig, hat es die Tabelle beschädigt? –

1

Sein war DBASE III (Art von).

Die dbf-Datei enthält sowohl die Metadaten (wie Feldgröße und -typ) als auch die Daten. Sie sind alle in fester Größe gespeichert.

Ich kann mich nicht erinnern, wenn es Werkzeuge gibt, um die Feldgröße zu ändern, aber Sie können eine neue Tabelle erstellen und die Daten kopieren. Aber the format ist nicht so schwer.

+0

wenn ich eine neue Tabelle, wie über FID, Shapetype, usw. Informationen, die versteckt, aber mit. SHP-Datei verknüpft erstellen? – Dels

+0

Die Reihenfolge und andere Inoformierung müssen gleich sein. –

+0

Nur eine kleine Korrektur. Shapefiles verwenden DBASE4 nicht DBASE3-Version für die .dbf-Dateien –

5

NICHT bearbeiten die Header-Do, werden die Daten durch ausgerichtet feste Offset, und die Größe des Feldes, um etwas zu ändern, die nicht die physische Länge des WILL korrupten Tabellensatzes entspricht.

Sie benötigen etwas, das DBFs lesen/schreiben kann, um dies effektiv zu tun. Eine alte Installation von DBase funktioniert, obwohl Sie mit Visual FoxPro besser dran wären (der FoxPro-Befehl wäre MODI STRU, was die Abkürzung für "MODIFY STRUCTURE" ist). Ich würde mir auch andere Tools ansehen, um die Daten in andere Formate zu übertragen. Wenn Sie Zugriff auf Access (entschuldigen Sie das Wortspiel) haben, könnten Sie die Daten immer in Access als eine Access-Tabelle importieren, die Tabelle neu strukturieren und dann exportieren, obwohl seit native DBF/FoxPro-Unterstützung mehr oder begonnen wurde weniger entfernt, ODBC erforderlich.Andere (zeitaufwendigere) Maßnahmen wäre:

  • Blick auf Excel (vorausgesetzt, die Daten nur sehr wenige Zeilen, ältere Versionen können nur 32k oder 64k Zeilen insgesamt Griff)
  • einige Python verwenden, um zu lesen/schreiben von Daten (mit dem Suche nach diesen Informationen über SO)
  • eine Variante der oben in Perl/Ruby-/ {Lieblingsskriptsprache Einlegers mit DBF-Bibliothek}
  • Verwendung ODBC + {insert cheapo Datenbank hier} + {insert cheapo admin tool für billige Datenbank, die eine Registerkarte ändern kann le here} + export von {cheapo database}
2

Um die Feldgröße in einer .dbf-Datei zu bearbeiten, verwende ich OpenOffice. In OpenOfficeSpreadsheet würde der Name der .dbf-Datei als "FEILDNAME, C, 200" angezeigt. Um die Größe von 200 -> 80 zu ändern, müssten Sie den Feldnamen auf "FEILDNAME, C, 80" ändern und dann die .dbf-Datei speichern.