2009-03-16 26 views
2

Je travaillais actuellement avec le format de fichier de formes ESRI et j'ai des problèmes avec la modification/l'édition de la taille du champ de la base de données. J'ai créé un champ avec 200 longueur/taille et maintenant je le veux à seulement 80 longueur/taille (espace & autre amélioration).Modification de la taille du champ DBF

Cependant, je ne peux pas modifier la taille du champ plus :(Quelqu'un peut-il indiquer comment changer la taille du champ?

BTW, je l'ai essayé des utilitaires tels que DBF Explorateur qui peut modifier la taille du champ, mais quand je change le terrain taille sur le champ char/texte, les données sur float/champ numérique sont supprimés :(
DBF Explorer

PS: l'utilisation de la base de données Esri extension .dbf, que je pense qu'il était dBase III plus ou DBASE IV format

Répondre

1

Vous pouvez modifier l'en-tête du fichier pour le modifier avec n'importe quel éditeur hexadécimal.

octets 10-11: représente le lenth d'un dossier (moins d'octet de poids faible en premier)

partir de l'octet 48 d'une structure répétée (48 octets chacune) décrivant le terrain. L'octet 33 de cette structure représente la longueur.

+0

éditeur hexadécimal sonne bien, j'espère qu'il ne ruinera pas les données qui sont déjà à l'intérieur, je vais essayer, merci: D – Dels

+0

juste curieux, at-il corrompu la table? –

1

Son DBASE III (sorte de)

Le fichier dbf contient à la fois les métadonnées (comme la taille et le type du champ) et les données. Ils sont tous stockés de taille fixe.

Je ne me souviens pas s'il existe des outils pour changer la taille de champs, mais vous pouvez créer une nouvelle table et copier les données. Mais the format n'est pas si difficile.

+0

Si je crée une nouvelle table, qu'en est-il des informations Fid, Shapetype, etc. qui sont cachées mais liées au fichier .shp? – Dels

+0

La commande et les autres informations doivent être identiques. –

+0

Juste une correction mineure. Shapefiles utilisent DBASE4 pas DBASE3 version pour les fichiers .dbf –

5

Ne PAS modifier l'en-tête, les données sont alignées par décalage fixe, et en changeant la taille du champ à quelque chose qui ne correspond pas à la longueur physique du disque WILL corrompre votre table.

Vous aurez besoin de quelque chose qui peut lire/écrire des fichiers DBF pour le faire efficacement. Une ancienne installation de DBase fonctionnera, bien que vous feriez mieux avec Visual FoxPro (la commande FoxPro serait MODI STRU qui est l'abréviation de "MODIFY STRUCTURE"). Je voudrais également regarder d'autres outils pour pousser/tirer les données dans d'autres formats. Si vous avez accès à Access (pardonnez le jeu de mots), vous pouvez toujours importer les données dans Access en tant que table Access, restructurer la table, puis l'exporter, bien qu'à partir d'Access 2007, le support natif DBF/FoxPro soit plus ou moins supprimé, nécessitant ODBC.D'autres (plus de temps) des mesures seraient:

  • regard à l'aide d'Excel (fourni les données a très peu de lignes, les anciennes versions ne peuvent gérer 32k ou 64k lignes au total)
  • utiliser un Python pour lire/écrire des données (faire une recherche sur le SO pour cette info)
  • une variante de ce qui précède en Perl/Ruby/{insérer langage de script favori avec une bibliothèque DBF}
  • utiliser ODBC + {insérer la base de données de cheapo ici} + {insert cheapo admin tool pour base de données cheapo qui peut modifier un onglet le ici} + exporter de {base de données cheapo}
2

Pour modifier la taille de champ dans un fichier .dbf j'utilise OpenOffice. Dans OpenOfficeSpreadsheet, le nom de domaine .dbf serait présenté comme "FEILDNAME, C, 200". Pour changer la taille de 200 -> 80, vous devez changer le nom du champ en "FEILDNAME, C, 80", puis enregistrez le fichier .dbf.