Alterar tamanho do campo DBF
Pergunta
Eu trabalhei com formato shapefile ESRI agora e eu tenho algum problema com a mudança / editar o tamanho do campo de banco de dados. Eu criei um campo com 200 comprimento / tamanho e agora eu quero que ele apenas 80 comprimento / tamanho (espaço e outra melhoria).
No entanto i posso mais não o tamanho campo de edição :( ponto alguém pode descobrir como alterar o tamanho do campo?
utilitários Btw eu tentei, como DBF Explorer, que pode dimensionar editar campo, mas quando eu mudar o tamanho do campo no campo de char / texto, dados no flutuador campo / numérico ficar excluído :(
DBF Explorador
PS: o uso de banco de dados ESRI .dbf extensão, o que eu acho que foi DBASE III mais ou formato DBASE IV
Solução
Você pode editar o cabeçalho do arquivo para mudá-lo com qualquer editor hexadecimal.
bytes 10-11: representa o lenth de uma ficha (byte menos significativo em primeiro lugar)
começando no byte 48 uma estrutura que se repete (48 bytes cada) descrevendo o campo. O byte 33 da estrutura representa o comprimento.
Outras dicas
Do não editar o cabeçalho, os dados são alinhados pela deslocamento fixo , e mudando o tamanho do campo para algo que não corresponde ao físico comprimento do registro irá corromper sua tabela.
Você vai precisar de algo que pode ler / DBFs gravação para efetivamente fazer isso. Uma antiga instalação do DBase vai funcionar, embora você seria melhor fora com Visual FoxPro (o comando FoxPro seria MODI STRU , que é a abreviação de " modificar a estrutura "). Também gostaria de olhar para outras ferramentas para empurrar / puxar os dados em outros formatos. Se você tem acesso ao Access (desculpem o trocadilho), você sempre pode importar os dados no Access como uma tabela do Access, reestruturar a mesa, em seguida, exportá-lo para fora, embora começando com Access 2007, DBF nativa / suporte FoxPro tem sido mais ou menos removida, requerendo ODBC. Outros (mais demorada) medidas seria:
- olhada usando o Excel (desde que o dados tem muito poucas linhas, as versões mais antigas só pode lidar com 32k ou 64k linhas total)
- usar algum Python para ler / escrever dados (faça uma procurar no SO para este info)
- uma variante do acima em Perl / Ruby / {insert linguagem de script favorita com uma biblioteca DBF}
- uso ODBC + {inserir banco de dados cheapo aqui} + {insert ferramenta de administração cheapo para banco de dados cheapo que podem modificar uma tabela aqui} + exportação {Banco de dados cheapo}
Para editar o tamanho do campo em um arquivo .dbf eu uso o OpenOffice. Em OpenOfficeSpreadsheet o nome feild .dbf seria apresentado como "FEILDNAME, C, 200". Para alterar o tamanho de 200 -> 80 você teria que schange conservado o nome do campo para: "FEILDNAME, C, 80" e salve o arquivo .dbf
.A sua DBASE III (tipo de).
O arquivo DBF ambos contêm os metadados (como tamanho do campo e tipo) e os dados. Eles são todos tamanho fixo armazenado.
Eu não me lembro se existem ferramentas para mudar o FieldSize, mas você pode criar uma nova tabela e copiar os dados. Mas o formato não é tão difícil.