SELECT
'ALTER TABLE '|| table_name || ' RENAME TO ''' || replace(table_name, '2021', '2020') ||''';'
FROM gpkg_geometry_columns
WHERE table_name like '%2021';
Esse SQL vai buscar os nomes das tabelas em gpkg_geometry_columns
e criar o sql de renomeação para cada uma das tabelas que passarem no WHERE
.
O replace
vai mudar o texto do nome da tabela para o novo nome.
O resultado desse script pode ser passado para um arquivo SQL da seguinte maneira:
sqlite3 nome_do_arquivo.gpkg ".read gen_rename_sql.sql" > sqlrenames.sql
Um arquivo renames será gerado com o resultado do script.
Após isso, basta rodar o script gerado no banco
sqlite3 nome_do_arquivo.gpkg ".read sqlrenames.sql"
Isso irá renomear todas as tabelas cujo o nome terminam com 2021
logo após, basta fazer o update das tabelas internas do geopackage gpkg_geometry_columns
e gpkg_gpkg_contents
usando os SQLs a seguir;
UPDATE gpkg_contents
SET table_name = replace(table_name, '2021', '2020')
WHERE table_name like '%2021';
UPDATE gpkg_geometry_columns
SET table_name = replace(table_name, '2021', '2020')
WHERE table_name like '%2021';
ATENÇÃO:
- O script gen_rename_sql.sql já possui os SQLs para fazer a alteração em
gpkg_contents
egpkg_geometry_columns
, não há necessidade de executar essas instruções novamente; - Se utilizar outro nome para o arquivo
sqlrenames.sql
lembre-se de informar o nome correto em todos os locais necessários; - O arquivo
sqlrenames.sql
é um arquivo temporario, pois para executar os comandos no banco, ele não pode estar travado para edições.