Изменение размера поля DBF

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

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

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

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


person Dels    schedule 16.03.2009    source источник


Ответы (4)


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

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

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

person Fabian Vilers    schedule 16.03.2009
comment
шестнадцатеричный редактор звучит хорошо, надеюсь, он не испортит данные, которые уже есть, я попробую, спасибо :D - person Dels; 17.03.2009
comment
просто любопытно, это повредило таблицу? - person Avery Payne; 21.06.2009

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

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

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

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

person Jóhann    schedule 20.04.2011

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

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

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

person Toon Krijthe    schedule 16.03.2009
comment
если я создам новую таблицу, как насчет информации Fid, Shapetype и т. д., которая скрыта, но связана с файлом .shp? - person Dels; 17.03.2009
comment
Просто небольшая поправка. Шейп-файлы используют версию DBASE4, а не DBASE3 для файлов .dbf. - person Devdatta Tengshe; 03.06.2009