Criar tabelas, importar em massa e consultar dados

Concluído

A universidade precisa de um local para armazenar os dados que estão atualmente armazenados em arquivos de texto. Eles querem tornar os dados relacionais para melhorar a capacidade de acessá-los. Eles selecionaram um banco de dados individual no Banco de Dados SQL do Azure como o serviço de armazenamento para esses dados. Vamos dar uma olhada no Banco de Dados SQL e ver como fazer o upload e a consulta.

Criar um banco de dados individual usando o portal do Azure

O Banco de Dados SQL é um serviço de banco de dados relacional baseado na versão estável mais recente do Mecanismo de Banco de Dados do Microsoft SQL Server. O Banco de Dados SQL oferece alto desempenho, é fácil de usar, é confiável e altamente seguro. Você pode utilizar o Banco de Dados SQL para criar novos aplicativos, sites e microsserviços na linguagem de programação de sua escolha e não precisa gerenciar a infraestrutura.

Crie um banco de dados individual no portal do Azure ou usando o Azure PowerShell ou a CLI.

  1. No menu do portal do Azure, selecione Criar um recurso.

    Screenshot of Azure portal menu and Create a resource option.

  2. Selecione Bancos de dados e, em seguida, Banco de Dados SQL.

    Screenshot of the Databases and SQL Database options.

  3. Para usar a CLI, execute os comandos az sql server create e az sql db create.

  4. Para usar o PowerShell, execute os comandos New-AzSqlServer e New-AzSqlDatabase.

Ao criar um banco de dados individual, será solicitado que você especifique o servidor para gerenciar o banco de dados. Crie um novo servidor ou use um existente.

Ao criar um novo servidor e optar por usar a autenticação SQL, será solicitado que você especifique um nome de usuário e uma senha de administrador do servidor. Utilize essas credenciais para se conectar ao servidor para realizar tarefas administrativas e para acessar os bancos de dados que o servidor controla. O Banco de Dados SQL também dá suporte à autenticação do Microsoft Entra. Você também pode optar por usar a autenticação do SQL e do Microsoft Entra. Porém, você deve sempre definir um administrador ou criar uma conta de administrador ao criar um servidor. Em seguida, conceda acesso a contas armazenadas no Microsoft Entra ID.

Cada servidor de banco de dados é protegido por um firewall, a fim de bloquear processos potencialmente mal-intencionados. Você pode abrir o firewall para outros serviços do Azure. E pode habilitar seletivamente o acesso a outros computadores com base nos endereços IP ou em um intervalo de endereços. O Banco de Dados SQL também fornece uma segurança avançada para possibilitar que você:

  • Especifique a confidencialidade dos dados em colunas específicas de tabelas.
  • Avalie a vulnerabilidade de seus bancos de dados e execute as etapas de correção necessárias.
  • Envie alertas ao detectar uma ameaça.

Você provisiona recursos usando o modelo de núcleo virtual (vCore), que especifica os recursos de memória, E/S e CPU a serem alocados. Você pode dimensionar os recursos de computação e armazenamento independentemente. Como alternativa, pode atribuir recursos em termos de DTUs (Unidades de Transação de Banco de Dados). Uma DTU é uma medida do custo calibrado dos recursos necessários para executar uma transação com parâmetro de comparação.

Se você tem vários bancos de dados e os requisitos de recursos desses bancos de dados flutuam, use o pool elástico do SQL. Esse recurso possibilita compartilhar um pool de recursos entre bancos de dados em pool, conforme exigido pela demanda.

Ao criar um banco de dados, você também especifica como os dados devem ser agrupados. Um agrupamento define as regras que o banco de dados usa para classificar e comparar dados. Também especifica o conjunto de caracteres a usar para dados de texto. É possível alterar o ordenação após criar o banco de dados, mas isso não é recomendado quando o banco de dados contém dados.

Criar tabelas

Use qualquer uma dessas ferramentas para criar tabelas:

  • O editor de consultas no portal do Azure
  • O utilitário sqlcmd e o Cloud Shell
  • O SQL Server Management Studio

Independentemente da ferramenta escolhida, você define a tabela usando o comando T-SQL (Transact-SQL) CREATE TABLE. O Banco de Dados SQL é compatível com chaves primárias, chaves estrangeiras, índices e gatilhos em tabelas. O código de exemplo a seguir cria um par de tabelas relacionadas e um índice não agrupado. Execute esses comandos como um lote no Editor de Consultas ou no utilitário sqlcmd.

CREATE TABLE MyTable
(
    MyColumn1 INT NOT NULL PRIMARY KEY,
    MyColumn2 VARCHAR(50) NOT NULL
);

CREATE TABLE MyTable2
(
    AnotherColumn1 INT NOT NULL,
    AnotherColumn2 INT NOT NULL REFERENCES MyTable,
    AnotherColumn3 VARCHAR(50) NULL,
    PRIMARY KEY (AnotherColumn1, AnotherColumn2)
);

CREATE INDEX cci ON MyTable2(AnotherColumn3);

Para acessar o Editor de Consultas no portal do Azure, acesse a página do seu banco de dados e, em seguida, selecione Editor de Consultas. Você é solicitado a fornecer credenciais. Defina o Tipo de autorização como Autenticação do SQL Server e digite o nome de usuário e a senha configurados ao criar o banco de dados. Ou você pode selecionar a autenticação de senha do Active Directory e fornecer as credenciais de um usuário autorizado no Microsoft Entra ID. Se o logon único do Active Directory está habilitado, conecte-se usando sua identidade do Azure.

The SQL Database sign-in page in the Azure portal.

Insira seu código T-SQL no painel de consulta e selecione Executar para executá-lo. Se a instrução T-SQL for uma consulta, as linhas retornadas aparecerão no painel Resultados. O painel Mensagens exibe informações como a quantidade de linhas retornadas ou os erros que ocorreram:

The query editor in the Azure portal with the various panes highlighted.

Para usar o utilitário sqlcmd, acesse o Cloud Shell e execute o comando a seguir. Substitua <server> pelo nome do servidor de banco de dados que você criou, <database> pelo nome do banco de dados, e <user name> e <password> pelas suas credenciais.

sqlcmd -S <server>.database.windows.net -d <database> -U <username> -P <password>

Se o comando entrando for bem-sucedido, você confere um prompt 1>. Você pode inserir comandos T-SQL em várias linhas e digitar GO para executá-los.

Importar dados em massa com bcp

A Microsoft fornece várias ferramentas que podem ser usadas para carregar dados para o banco de dados SQL:

  • O SQL Server Integration Services (SSIS)
  • A instrução SQL BULK INSERT
  • O utilitário bcp (programa de cópia em massa)

O utilitário bcp geralmente é usado porque é conveniente e pode ser facilmente inserido em um script caso esteja importando dados para várias tabelas. O bcp é um utilitário de linha de comando para importar e exportar dados de um banco de dados. Para importar dados, o bcp requer três coisas:

  • Os dados de origem para fazer upload.
  • Uma tabela existente no banco de dados de destino.
  • Um formato de arquivo que define o formato dos dados e como mapear os dados para as colunas na tabela de destino.

O utilitário bcp é flexível. Os dados de origem podem estar em praticamente qualquer formato estruturado. O arquivo de formato indica o layout dos dados e se os dados são binários ou baseados em caracteres. O arquivo de formato indica o layout dos dados e se os dados são binários ou baseados em caracteres. O arquivo de formato também especifica como mapear cada item do arquivo para uma coluna na tabela. É importante definir o conteúdo desse arquivo corretamente. Caso contrário, os dados podem não ser importados ou podem ser lidos nas colunas erradas.

Suponha que você tem os seguintes dados em um arquivo chamado mydata.csv e deseja importá-los para a tabela MyTable criada anteriormente.

Column1,Column2
99,some text
101,some more text
97,another bit of text
87,yet more text
33,a final bit of text

A primeira linha contém nomes de campos, que não são os mesmos que as colunas da tabela. Os dados são separados por vírgulas e cada linha é encerrada com um caractere de nova linha. Lembre-se que a ordem das colunas no arquivo pode ser diferente da tabela. Neste exemplo, a primeira coluna da tabela é numérica e a segunda coluna, uma cadeia de caracteres, conforme o seguinte:

CREATE TABLE MyTable
(
    MyColumn1 INT NOT NULL PRIMARY KEY,
    MyColumn2 VARCHAR(50) NOT NULL
);

Use o comando bcp para criar um arquivo de formato para importação. O comando bcp pode criar um arquivo de formato com base no esquema da tabela de destino no banco de dados. Em seguida, é possível editar esse arquivo para corresponder aos dados do arquivo de origem.

Execute o comando a seguir para criar um arquivo de formato. Substitua os itens entre colchetes pelos seus valores de banco de dados, servidor, nome de usuário e senha:

bcp <database>.dbo.mytable format nul -c -f mytable.fmt -t, -S <server>.database.windows.net -U <username> -P <password>

O utilitário bcp tem vários parâmetros que controlam a funcionalidade do utilitário. É possível especificar:

  • A tabela de destino (<database>.<schema>.<table>)
  • Os dados a importar e detalhes sobre os dados (format nul -c -f mytable.fmt -t,)
  • Os detalhes da conexão com seu banco de dados (-S <server>.database.windows.net -U <username> -P <password>)

Para ver a sintaxe completa e os parâmetros de linha de comando do utilitário, confira a documentação de ajuda.

O comando gera o arquivo de formato mytable.fmt com conteúdo parecido com este:

14.0
2
1       SQLCHAR             0       12      ","    1     MyColumn1                                ""
2       SQLCHAR             0       50      "\n"   2     MyColumn2                                SQL_Latin1_General_CP1_CI_AS

A primeira linha mostra o número de versão interno do Banco de Dados SQL. A segunda linha mostra o número de colunas na tabela de origem. As duas últimas linhas indicam como mapear dados do arquivo de origem para essas colunas.

Ambas as linhas começam com um número que é o número da coluna na tabela. O segundo campo (SQLCHAR) especifica que, ao usar esse arquivo de formato para importar dados, cada campo do arquivo de origem contém dados de caractere. O utilitário bcp tenta converter esses dados no tipo apropriado para a coluna correspondente na tabela. O próximo campo (12 e 50) é o comprimento dos dados em cada coluna no banco de dados. Não altere esse campo! Os próximos itens ("," e "\n") são o terminador de campo no arquivo de origem e o caractere de nova linha, respectivamente. A próxima coluna é o número de campo no arquivo de origem. O penúltimo campo (MyColumn1 e MyColumn2) é o nome da coluna no banco de dados. O último campo é o ordenação a usar, que se aplica apenas aos dados de caractere no banco de dados.

Lembre-se de que os campos no arquivo de origem estão em uma ordem diferente em relação às colunas no banco de dados. Portanto, é preciso editar o arquivo de formato e alterar os números de campo, conforme mostrado abaixo:

14.0
2
1       SQLCHAR             0       12      ","    2     MyColumn1                                ""
2       SQLCHAR             0       50      "\n"   1     MyColumn2                                SQL_Latin1_General_CP1_CI_AS

Os dados do campo 2 no arquivo de origem são mapeados para a primeira coluna no banco de dados. O campo 1 é mapeado para a segunda coluna.

Agora, é possível usar o comando bcp para importar os dados, da seguinte maneira:

bcp <database>.dbo.mytable in mydata.csv -f mytable.fmt -S <server>.database.windows.net -U <username> -P <password> -F 2

O sinalizador in especifica que estamos usando bcp para importar dados. Use out para transferir dados de um banco de dados para um arquivo. O sinalizador -F 2 indica que a operação de importação deve começar na linha 2 do arquivo de origem. Lembre-se de que a primeira linha contém cabeçalhos ao invés de dados.

O comando deve executar com êxito e retornar mensagens semelhantes a estas:

Starting copy...

5 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 46     Average : (108.7 rows per sec.)

A linha importante na saída é "5 linhas copiadas" (). O número de linhas no arquivo de origem que contém dados que foram importados. Se esse número é diferente (ou zero), seu arquivo de formato pode estar incorreto.

Consultar dados

Verifique se a importação foi bem-sucedida consultando os dados. Use o editor de consultas do portal do Azure. Ou use o utilitário sqlcmd para se conectar ao banco de dados de uma linha de comando. Em ambos os casos, é possível executar uma instrução SELECT assim:

SELECT *
FROM MyTable;

Os seguintes resultados poderão ser exibidos.

The query editor in the Azure portal shows the results of a query.