Tradutor de SQL em lote

Neste documento, descrevemos como usar o tradutor de SQL em lote no BigQuery para traduzir o SQL do Teradata para o SQL padrão do BigQuery. Este documento é destinado a usuários familiarizados com o Console do Google Cloud.

O tradutor do SQL em lote faz parte do Serviço de migração do BigQuery. É possível usá-lo para converter um lote de outros dialetos SQL para o SQL padrão do BigQuery. Também é possível converter linguagens de script SQL, como Basic Teradata Query (BTEQ).

Os seguintes dialetos SQL são compatíveis:

  • SQL do Teradata
  • Basic Teradata Query (BTEQ)

Permissões necessárias

É necessário ter as seguintes permissões no projeto para ativar o serviço de migração do BigQuery:

  • resourcemanager.projects.get
  • serviceusage.services.enable
  • serviceusage.services.get

Você precisa das seguintes permissões no projeto para acessar e usar o serviço de migração do BigQuery:

  • bigquerymigration.workflows.create
  • bigquerymigration.workflows.get
  • bigquerymigration.workflows.list
  • bigquerymigration.workflows.delete
  • bigquerymigration.subtasks.get
  • bigquerymigration.subtasks.list

    Como alternativa, é possível usar os seguintes papéis para receber as mesmas permissões:

    • bigquerymigration.viewer: acesso somente de leitura.
    • bigquerymigration.editor: acesso de leitura e gravação.

Para acessar os buckets do Cloud Storage para arquivos de entrada e saída:

  • storage.objects.get no bucket de origem do Cloud Storage.
  • storage.objects.list no bucket de origem do Cloud Storage.
  • storage.objects.create no bucket de destino do Cloud Storage.

É possível conseguir todas as permissões necessárias do Cloud Storage com estes papéis:

  • roles/storage.objectAdmin
  • roles/storage.admin

Antes de começar

Antes de enviar um job de tradução, você precisa ativar a API e fazer o upload dos arquivos de origem para o Cloud Storage.

Ativar a API Migration

Ative a API BigQuery Migration da seguinte maneira:

  1. No Console do Cloud, acesse a página da API BigQuery Migration.

    Acesse a API BigQuery Migration

  2. Clique em Enable.

Fazer upload de arquivos de entrada no Cloud Storage

Antes de iniciar um job de tradução, faça upload dos arquivos de origem com as consultas e scripts que você quer traduzir. Para informações sobre o que um arquivo de origem pode conter, consulte a seção Formato do arquivo de origem. Para informações sobre como criar buckets e fazer upload de arquivos no Cloud Storage, consulte Como criar buckets de armazenamento e Como fazer upload de objetos.

Converter do SQL do Teradata

Siga estas etapas para iniciar uma tradução, ver o progresso e, por fim, ver os resultados. Para seguir estas etapas, é necessário ter feito upload dos arquivos de origem em um bucket do Cloud Storage.

Console

  1. No console do Cloud, acesse a página do BigQuery.

    Ir para o BigQuery

  2. No painel de navegação, acesse Tradução de SQL.

  3. Clique em Iniciar tradução.

  4. Preencha a caixa de diálogo de configuração de tradução.

    1. O nome pode conter letras, números ou sublinhados.
    2. Escolha um local para o job de tradução. Para uma execução mais eficiente, escolha o mesmo local do bucket do arquivo de origem.
    3. Escolha o SQL do Teradata para o modo de tradução.
  5. Clique em Continuar.

  6. Escolha um caminho de origem. Você pode digitar o caminho ou usar a opção Procurar. Também é possível excluir determinados arquivos no bucket adicionando filtros de prefixo.

  7. Clique em Continuar para ir para a próxima etapa.

  8. Escolha um caminho de destino. Como para o caminho de origem, digite o caminho ou use a opção Procurar.

  9. Para traduções simples, clique em Criar para iniciar o job de tradução. Para informações sobre como usar as configurações opcionais, consulte a seção Configurações opcionais.

  10. Veja o status do job na lista de jobs de tradução.

    Status da tradução.

  11. Quando a tradução estiver concluída, clique em Mostrar detalhes para ver os resultados do job de tradução.

API

Chame o método create com um fluxo de trabalho definido.

Em seguida, chame o método start para iniciar o fluxo de trabalho de tradução.

Configurações adicionais para tradução de BTEQ

Veja abaixo os campos extras que são obrigatórios para a tradução de BTEQ. As opções do BTEQ são definidas na guia Configurações do BTEQ depois de definir o caminho do destino.

Campo Obrigatório Descrição
ID do conjunto de dados Obrigatório Esse ID do conjunto de dados é usado como prefixo das tabelas referenciadas no script.

Por exemplo, uma instrução insert que insere novos dados em table1 é traduzida em datasetId.table1.

URI de caminho padrão Obrigatório Se especificado, esse caminho é usado como padrão nas instruções .IMPORT e .EXPORT.
Substituição de caminho Não é obrigatório Esse campo pode ser adicionado várias vezes. Quando adicionado, você especificará um caminho para qualquer arquivo mencionado no script de BTEQ. Ao traduzir, o arquivo é substituído pelo caminho fornecido.

Por exemplo, se você fornecer os seguintes pares de arquivo e caminho:

  • ./file1.csv
  • gs://bucket/folder1/file1*.csv
Em seguida, todas as referências a file1.csv serão substituídas pelo caminho fornecido do Cloud Storage.

Configurações opcionais

Estas são as configurações das traduções avançadas.

Campo Descrição
Caminho do esquema Este é um caminho do Cloud Storage que contém instruções de linguagem de definição de dados (DDL) para esquemas de tabela. Fornecer esquemas de tabela pode melhorar os resultados da tradução.
Codificação de arquivo

Este campo especifica a codificação do arquivo de entrada. O padrão é "utf-8". As seguintes codificações estão disponíveis:

  • UTF_8
  • ISO_8859_1
  • US_ASCII
  • UTF_16
  • UTF_16LE
  • UTF_16BE

Casos de identificação do SQL de saída

Capitalização de saída para nomes de Tabela/Coluna. O padrão é manter a capitalização original. Veja a seguir as opções para esse campo:

  • Padrão
  • Manter original
  • Maiúscula
  • Minúscula

Mapa de token especial Se os arquivos de entrada da tradução contiverem modelos SQL usando tokens especiais como marcadores, use esta seção para fornecer um mapa dos tokens especiais para o respectivo tipo de dados.

Veja a seguir um exemplo de par de tokens especiais:

  • Token especial: <b>
  • Tipo de dado: NUMERIC
Com esse token, a seguinte instrução SQL do Teradata:

select trim(<b>) from x;
é convertida no seguinte SQL padrão do BigQuery:

SELECT TRIM(CAST(<b> AS STRING)) FROM x;

Explorar os arquivos de saída

Depois de executar a tradução, é possível ver os resultados e erros no caminho especificado. O tradutor SQL em lote gera os seguintes arquivos para o caminho de destino:

  • Arquivo traduzido
  • Arquivos de resumo de erros

Arquivos traduzidos

Para cada arquivo de entrada, um arquivo de saída correspondente é gerado no caminho de destino. O arquivo de saída contém as consultas e os erros traduzidos.

Arquivo de resumo de erros

O arquivo de resumo de erros é um arquivo CSV contendo uma tabela com todos os erros encontrados durante a tradução. Cada arquivo de entrada tem um arquivo de resumo de erros correspondente. Os arquivos de resumo são nomeados como <source_file_name>_errors.csv.

Veja a seguir um exemplo de arquivo de resumo de erros:

Input_Query Linha, Coluna Categoria Message Tipo
"selct * em abc" 5,1 SqlParseException Expressão sem consulta encontrada em contexto ilegal ERRO
"RENAM TBLE DB.table1 para DB.table2;" 1,1 SqlParseException Expressão sem consulta encontrada em contexto ilegal ERRO

Formato do arquivo de origem

Os arquivos de origem no bucket do Cloud Storage precisam ser arquivos de script SQL do Teradata ou BTEQ válidos.

Os arquivos de origem podem conter o seguinte:

  • Instruções SQL válidas encerradas por ponto e vírgula em uma ou em várias linhas.
  • Cada procedimento armazenado (SP, na sigla em inglês) precisa estar em um arquivo próprio separado de outros SPs e outras instruções SQL.
  • Instruções BTEQ compatíveis e solicitações SQL de várias instruções válidas se o modo BTEQ for escolhido.
  • Comentários anotados por /*, */, -- ou * se estiverem traduzindo BTEQ.
  • Tokens de marcador especiais que não são aplicáveis à tradução. É preciso especificar esses tokens em um arquivo de configuração. Para mais informações, consulte, Configurações opcionais.

Os arquivos de origem não podem conter: + Instruções BTEQ não compatíveis. Para mais informações, consulte Instruções BTEQ não compatíveis.

Instruções BTEQ compatíveis

As seguintes instruções são compatíveis com traduções do BTEQ.

  • .ACTIVITYCOUNT
  • .ERRORCODE
  • .EXIT/.QUIT
  • .EXPORT
  • .GOTO/.LABEL
  • .IF, .ELSEIF, .ELSE, .ENDIF
  • .IMPORT
  • .USING
  • .REPEAT

Instruções BTEQ não compatíveis

As seguintes instruções não são compatíveis.

  • .MAXERROR
  • .NULL
  • .REPEATSTOP
  • .RETRY
  • .RUN

Limitações

Sem suporte para mapeamento de esquema

O tradutor SQL não converte alterações de esquema entre o armazenamento de dados de origem e o BigQuery. As referências aos nomes de colunas ou tabelas alteradas no esquema não serão refletidas nas consultas de entrada durante a tradução. Por exemplo, se uma coluna chamada "foo" for renomeada como "bar" durante a migração, a tradução não atualizará automaticamente as consultas que fizerem referência a "foo" para fazer referência a "bar". Para atualizar essas referências, execute uma etapa de pós-processamento para substituir esses identificadores SQL nas consultas de saída traduzidas.

A seguir