Consultor Eletrônico



Kbase 47712: Script para alterar área de dados e índices
Autor   Marcos Kirchner - CAT
Acesso   Público
Publicação   16/04/2014
Os arquivos de definições de bancos de dados Progress (arquivos DF) liberados pela TOTVS sempre indicam a utilização da área "Schema Area" para armazenamento das tabelas e índices. Esta área é utilizada pois ela existe em todos os banco de dados Progress OpenEdge e não é possível removê-la. Desta forma é garantido que nunca ocorrerão erros de área inexistente na importação da DF.

Porém o ideal é que a Schema Area seja utilizada apenas pelos objetos de sistema do próprio banco de dados. Todas as tabelas e índices criados pelo usuário/aplicação deveriam estar em uma área diferente da Schema Area.

O script PowerShell abaixo ajuda a realizar a alteração de área de dados e índices dos DF, considerando que inicialmente todas as áreas sejam "Schema Area".

$dfFiles = Get-ChildItem *.df;
$dfFiles | ForEach-Object {
Get-Content $_ | ForEach-Object {
if ($_ -like "ADD TABLE *") {
$lastType = "dados";
}
elseif ($_.ToLower() -like "ADD INDEX *") {
$lastType = "indices";
}
if ($_.ToLower() -eq ' AREA "Schema Area"') {
" AREA ""$lastType""";
}
else {
$_;
}
} | Out-File -Encoding ASCII -FilePath "$($_.BaseName).areas.df";
}
$dfFiles = $null;


Este script processa todas as definições de dicionário no diretório atual e cria uma nova definição, com extensão ".areas.df". Nesta nova definição as áreas das tabelas foram alteradas para "dados" e as áreas de índices foram alteradas para "indices".
Anexos
script.ps1