SnowConvert AI - Recurso de renomeação¶
Renomear objetos durante um processo de migração de banco de dados é algo que muitos usuários precisam fazer. Por esse motivo, o SnowConvert AI habilita o recurso de renomeação para permitir a definição de novos nomes para os seguintes tipos de objetos definidos pelo usuário:
Nota
Este recurso é compatível com Teradata, SQL Server e RedShift ONLY.
Esquemas
Tabelas
Exibições
Exibições materializadas
Procedimentos
Funções
Macros
Nota
O recurso de renomeação será aplicado à definição do objeto e aos usos do objeto.
Esses objetos geralmente são qualificados em um esquema ou em um banco de dados, portanto, dependendo da plataforma do banco de dados, o objeto Table1 pode ser referenciado simplesmente como Table1, como MySchema.Table1 ou como MyDatabase.MySchema.Table1. É essencial qualificar totalmente cada objeto no arquivo de renomeação para evitar ambiguidade.
Os novos nomes de objetos são especificados por meio de um arquivo .json com o seguinte formato.
Nota
Observe que este exemplo contém uma seção «Macros», que é um elemento específico do Teradata e pode variar dependendo da linguagem especificada.
Uso¶
Para usar o recurso de renomeação, você deve executar a versão CLI do SnowConvert AI com o seguinte argumento --RenamingFile e fornecer o caminho para o arquivo .json contendo as informações de renomeação. Um exemplo do comando pode ser parecido com este:
snowct.exe -i «somePath/input» -o «somePath/output» –RenamingFile «somePath/renamings.json»
Modos de renomeação¶
Observe que há dois campos para cada tipo de objeto: "Tables" e "TablesRegex", "Views" e "ViewsRegex", e assim por diante. Isso ocorre porque há duas maneiras de especificar as renomeações.
Objeto por objeto (linha por linha)¶
Nesse modo, cada linha representa um objeto e deve conter o nome original totalmente qualificado e o novo nome. Portanto, se quisermos mover um objeto chamado «Table1» dentro do esquema «OriginalSchema» para o esquema «SchemaSF», a linha deverá ser a seguinte:
Se também quisermos renomeá-la para «Table2», a linha deverá ser a seguinte:
Essas informações devem ser especificadas nas seções "Tables", _ "Views", _ "Procedures"_, _ "Macros" e "Functions" do arquivo .json e cada linha deve ser separada por vírgula. Vamos dar uma olhada em um exemplo:
TableExample1
O exemplo acima diz que as únicas três tabelas em toda a carga de trabalho a serem renomeadas são as chamadas «Table1», «Table2» e «Table3», todas localizadas dentro do esquema «Schema1»; elas devem ser renomeadas para «_SF\Table1», «SF_Table2» e «SF_Table3», respectivamente; e, por fim, elas estarão localizadas no esquema «SF_Schema1» no Snowflake.
Expressões regulares¶
Se houver necessidade de renomear vários objetos da mesma forma, o recurso também permite que expressões regulares definam padrões a serem aplicados a objetos do mesmo tipo. São necessárias duas linhas para especificar cada renomeação, a primeira linha é "RegexExpr", que é a expressão de correspondência, e a segunda linha é "RegexReplace", que é a expressão de substituição. Essas informações devem ser fornecidas nas seções "TablesRegex", "ViewsRegex", "ProceduresRegex", "MacrosRegex" e "FunctionsRegex" do arquivo .json. Portanto, o exemplo anterior também pode ser escrito da seguinte maneira, usando o recurso de expressão regular.
TableExample2
A única diferença é que essa forma se aplica a todas as tabelas localizadas no esquema «Schema1». A expressão regex corresponderia a todas as tabelas definidas no esquema «Schema1» e criaria um grupo de captura com tudo o que estiver após o ponto. A substituição de regex moverá as tabelas para o esquema «SF_Schema1» e adicionará o prefixo «SF_» a todas as tabelas encontradas fazendo referência ao primeiro grupo criado ($1) na expressão regex.
Renomear a prioridade¶
Pode haver renomeações que se aplicam ao mesmo objeto e apenas uma delas é escolhida. Na mesma seção, o SnowConvert AI aplicará a primeira renomeação que corresponde ao nome do objeto atual e deixará de tentar renomear esse objeto. Portanto, no exemplo a seguir, apesar de a seção "Tabelas" especificar a renomeação de «Table1» como «Table1-a» e também para «Table1-b», o SnowConvert AI só a renomeará como «Table1-a».
Além disso, o SnowConvert AI tentará renomear um objeto primeiro verificando-o pela seção de renomeação de objeto antes de tentar a seção de expressões regulares. Assim, no exemplo a seguir, apesar de ambas as renomeações poderem ser aplicadas ao mesmo objeto «Schema1.Table1», apenas a que está definida na seção "Tabelas" é aplicada.
Exemplo¶
Digamos que temos o seguinte código de entrada.
Código de entrada
E as seguintes informações de renomeação
Renomeando o arquivo (.JSON)
Esse seria o código de saída com e sem renomeação.
Código de saída do Snowflake¶
Observe como todas as referências a «CLIENT» foram renomeadas para «USER»