Изменение размера поля DBF - PullRequest
3 голосов
/ 16 марта 2009

Я работал с форматом шейп-файла ESRI прямо сейчас, и у меня возникли проблемы с изменением / редактированием размера поля базы данных. Я создал поле с 200 длина / размер, и теперь я хочу, чтобы оно было только 80 длина / размер (пробел и другие улучшения).

Однако я больше не могу редактировать размер поля :( Может кто-нибудь указать, как изменить размер поля?

Кстати, я пробовал использовать такие утилиты, как DBF Explorer, которые могут редактировать размер поля, но когда я изменяю размер поля в символьном / текстовом поле, данные в плавающем / числовом поле удаляются: (
DBF Explorer

PS: База данных ESRI использует расширение .dbf, которое, я думаю, было форматом DBASE III plus или DBASE IV

Ответы [ 4 ]

5 голосов
/ 13 апреля 2009

Делать НЕ редактировать заголовок, данные выравниваются по с фиксированным смещением и изменяя размер поля до значения, не соответствующего физической длине запись БУДЕТ испортить вашу таблицу.

Вам нужно что-то, что может читать / записывать DBF, чтобы эффективно это делать. Будет работать старая установка DBase, хотя вам лучше использовать Visual FoxPro (команда FoxPro будет MODI STRU , что сокращенно от « MODIFY STRUCTURE »). Я также посмотрел бы на другие инструменты для передачи / извлечения данных в другие форматы. Если у вас есть доступ к Access (простите за каламбур), вы всегда можете импортировать данные в Access в виде таблицы Access, реструктурировать таблицу, а затем экспортировать ее, хотя начиная с Access 2007 встроенная поддержка DBF / FoxPro была менее удаленный, требующий ODBC. Другие (более трудоемкие) меры будут заключаться в следующем:

  • посмотрите на использование Excel (при условии в данных очень мало строк, более старые версии могут обрабатывать только 32 или 64 тыс. строк)
  • использовать некоторые Python для чтения / записи данных (сделать поиск SO для этой информации)
  • вариант вышеупомянутого в Perl / Ruby / {вставить любимый язык сценариев с библиотекой DBF}
  • использовать ODBC + {вставить дешевую базу данных здесь} + {вставить дешевый инструмент администратора для cheapo база данных, которая может изменить таблицу здесь + экспорт из {база данных дешевых}
2 голосов
/ 20 апреля 2011

Для редактирования размера поля в файле .dbf я использую OpenOffice. В OpenOfficeSpreadsheet имя файла .dbf будет представлено как «FEILDNAME, C, 200». Чтобы изменить размер с 200 на> 80, вам нужно изменить имя поля на: «FEILDNAME, C, 80», а затем сохранить файл .dbf.

1 голос
/ 16 марта 2009

Вы можете редактировать заголовок файла, чтобы изменить его с помощью любого шестнадцатеричного редактора.

байт 10-11: представляет длину записи (сначала младший байт)

начиная с байта 48 - повторяющаяся структура (по 48 байтов каждая), описывающая поле. Байт 33 этой структуры представляет длину.

1 голос
/ 16 марта 2009

Это DBASE III (вроде).

Файл dbf содержит метаданные (например, размер и тип поля) и данные. Все они хранятся фиксированного размера.

Я не могу вспомнить, есть ли инструменты для изменения размера поля, но вы можете создать новую таблицу и скопировать данные. Но формат не так уж и сложен.

...