Olá! Meu nome é Victorino Vila e este é o segundo curso da formação sobre a implementação do banco de dados MySQL na escola BitByte, utilizando inteligência artificial.
Audiodescrição: Victorino Vila é uma pessoa de pele clara e olhos escuros. Seus cabelos são curtos, lisos e grisalhos. Usa barba e bigode e está com uma camiseta azul-marinho. Ao fundo, parede branca sem decorações e iluminação azulada.
Vamos dar continuidade ao projeto e mergulhar em um dos aspectos mais desafiadores e fundamentais de qualquer sistema de banco de dados: a carga a partir de fontes externas.
Sabemos que trabalhar com carga de dados pode ser desafiador, pois os dados frequentemente vêm de fontes e formatos distintos - o que exige boas estratégias para que sejam carregados e integrados ao banco.
Não se preocupe, vamos superar essas dificuldades e acelerar o processo com a ajuda da inteligência artificial do Gemini. Essa inteligência artificial será nossa aliada ao longo do curso, auxiliando nas análises, no planejamento e na execução dos processos de carga de dados, garantindo soluções ágeis e eficientes.
Vamos carregar dados de diferentes formatos. Para as tabelas de alunos, cursos e sessões, utilizaremos arquivos CSV como fontes. Na carga de matrículas e exercícios, usaremos arquivos XML e JSON. Neste ponto do curso, utilizaremos Python junto com MySQL para a construção dessa carga. Se você não conhece Python, não se preocupe, a IA nos ajudará nesse processo.
Na parte final do curso, voltaremos ao MySQL para fazer a carga das respostas e das notas dos alunos, baseando-nos em um arquivo TXT não-estruturado. Esse será um grande desafio que enfrentaremos com a ajuda da IA.
Este curso será um verdadeiro diferencial para sua carreira. Com uma abordagem prática e integrada, você será capaz de lidar com cargas de dados reais e complexas, utilizando múltiplos instrumentos. Neste caso, mostraremos o uso de MySQL com Python, sempre com a IA auxiliando na construção desses processos.
O conhecimento adquirido não apenas fortalecerá suas habilidades em MySQL, mas também abrirá portas para projetos que exigem integração usando múltiplas tecnologias.
O objetivo final do curso é ter a base de dados da escola BitByte carregada. Esse será nosso objetivo prático a ser alcançado ao final das aulas.
Prepare-se para um aprendizado inovador e enriquecedor. Esperamos que juntos possamos transformar esse desafio em conhecimento prático, valioso para sua trajetória profissional.
Vamos começar o curso? Até o próximo vídeo!
Olá! Vamos retomar nosso trabalho de consultoria com a implementação do banco de dados relacional em MySQL na escola BitByte.
Você foi contratado(a) para projetar e criar o banco de dados da escola BitByte, uma instituição de cursos de tecnologia. Apesar de ensinar seus estudantes com o que há de mais avançado no mundo da informática, a escola ainda utiliza planilhas de Excel e sistemas locais para gerenciar suas atividades diárias. Por isso, você recebeu a missão de entender o funcionamento da escola e criar um banco de dados em MySQL que atenda às suas necessidades.
Embora você tenha feito os cursos de formação em MySQL, não tem experiência na implementação de um banco de dados. Este é seu primeiro trabalho. Logo, você vai recorrer à inteligência artificial para te auxiliar. A IA não implementará tudo sozinha, mas será uma ferramenta de produtividade que compensará nossa falta de experiência nesse tipo de trabalho.
No curso anterior dessa formação, conhecemos a empresa, entrevistamos pessoas usuárias, projetamos e criamos o banco de dados no MySQL:
Vamos relembrar as tabelas. Na tabela de alunos
, registramos os alunos que frequentam a escola, enquanto a tabela de cursos
contém os cursos oferecidos.
Na tabela de matriculas
, ligamos os alunos aos cursos, registrando todas as matrículas efetuadas. Claro que um aluno não precisa fazer todos os cursos oferecidos pela escola. Essa relação é registrada na tabela de matriculas
.
A tabela de cursos
está relacionada com a tabela de seções
, já que um curso é separado em seções, ou seja, em aulas que o aluno deve frequentar para ser aprovado no curso.
Ligado às seções
, temos uma lista de exercicios
que os alunos devem resolver. Na tabela de respostas
, registramos as respostas dos alunos aos exercicios
. Interligado às respostas
, temos a tabela de notas
, onde registramos uma nota de 0
a 9,99
, indicando se o aluno acertou ou não o exercício.
Projetamos esse banco com a ajuda da IA do Google, o Gemini. No navegador, vamos acessar o Gemini e criar um novo chat. A partir desse chat vazio, começaremos a fazer perguntas para resolver o problema apresentado neste curso.
O problema é que a escola possui todos os dados que serão incluídos no banco de dados em diferentes fontes. Precisamos criar processos de leitura e carga nessas tabelas, baseados nas fontes de dados externas utilizadas atualmente pela escola.
Na atividade de "Preparando o ambiente", disponibilizaremos um link para download do arquivo fontes.zip
. Basta baixar esse arquivo na sua máquina, mover para um subdiretório e extrair o conteúdo compactado. No nosso caso, criamos um subdiretório chamado C:\MySQL_IA
.
Dentro desse arquivo, temos diversos arquivos:
Alunos.csv
: CSV separado por ponto e vírgula com nome e e-mail de alunos;Cursos.csv
: CSV separado por tabulação com dados dos cursos e das respectivas seções;FichasExercicios.txt
: arquivo de texto normal, sem estruturação, que contém aluno, curso, perguntas, respostas e notas.Nosso objetivo é usar esses arquivos como fonte e criar processos para gravá-los na base de dados. Utilizaremos a IA do Gemini para nos ajudar na construção desses processos.
O arquivo chamado script_banco.sql
possui o script de criação do banco no MySQL, resultado do curso anterior. Vamos enviá-lo no primeiro prompt para a IA.
Vamos usar um prompt para registrar o formato do banco no chat, guardando as tabelas e campos na memória da IA:
Olá, Gemini. Vou começar uma série de consultas sobre como gravar dados em um banco de dados MySQL. Abaixo está o script de criação das tabelas para este banco.
[incluir o script]
Por favor, armazene esse esquema em sua memória para que possamos referenciar as tabelas e os campos enquanto discutimos as diferentes formas de gravação de dados neste banco de dados.
Na caixa de texto do Gemini, vamos colar tanto o prompt acima quanto o script abaixo, no local designado:
CREATE DATABASE EscolaBB;
USE EscolaBB;
CREATE TABLE Alunos (
id_aluno INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(100),
email VARCHAR(100)
);
CREATE TABLE Cursos (
id_curso INT PRIMARY KEY AUTO_INCREMENT,
nome_curso VARCHAR(100),
tipo_curso VARCHAR(100)
);
CREATE TABLE Matriculas (
id_matricula INT PRIMARY KEY AUTO_INCREMENT,
id_aluno INT,
id_curso INT,
data_matricula DATE,
tipo_matricula VARCHAR(20),
FOREIGN KEY (id_aluno) REFERENCES Alunos(id_aluno),
FOREIGN KEY (id_curso) REFERENCES Cursos(id_curso)
);
CREATE TABLE Secoes (
id_secao INT PRIMARY KEY AUTO_INCREMENT,
titulo VARCHAR(100),
descricao TEXT,
numero_secao INT,
id_curso INT,
FOREIGN KEY (id_curso) REFERENCES Cursos(id_curso)
);
CREATE TABLE Exercicios (
id_exercicio INT PRIMARY KEY AUTO_INCREMENT,
id_secao INT,
pergunta TEXT,
resposta_inicial TEXT,
FOREIGN KEY (id_secao) REFERENCES Secoes(id_secao)
);
CREATE TABLE Respostas (
id_resposta INT PRIMARY KEY AUTO_INCREMENT,
id_aluno INT,
id_exercicio INT,
resposta_aluno TEXT,
FOREIGN KEY (id_aluno) REFERENCES Alunos(id_aluno),
FOREIGN KEY (id_exercicio) REFERENCES Exercicios(id_exercicio)
);
CREATE TABLE Notas (
id_nota INT PRIMARY KEY AUTO_INCREMENT,
id_resposta INT,
valor_nota DECIMAL(3,2),
FOREIGN KEY (id_resposta) REFERENCES Respostas(id_resposta)
);
Entendido! O esquema do banco de dados "EscolaBB" foi armazenado.
Após apertar "Enter", a IA já sugere algumas inserções, mas não as consideraremos. Pois, em vez de fazer comandos de INSERT
manualmente, iremos ler os dados das fontes.
Começaremos esse curso no ponto onde terminamos o curso anterior da formação. Para garantir que tenhamos o mesmo banco de dados, devemos copiar o script de criação do banco de dados novamente.
Em seguida, vamos nos conectar ao MySQL. Se você já tiver o banco escolabb
criado, clique em seu nome no painel de navegação na lateral esquerda e escolha a opção "Drop Schema" para apagá-lo. Feito isso, clicamos no botão "Create a new SQL Tab" para criar um novo script e colar os comandos copiados do arquivo script_banco.sql
que estava dentro da pasta de fontes compactada.
Vamos executar os comandos, clicando no botão "Execute". Para atualizar, vamos clicar com o botão direito no painel de navegação e escolher a opção "Refresh All". Assim, teremos novamente o banco de dados escola_bb
, sem dados, apenas com as tabelas e seus relacionamentos.
No próximo vídeo, começaremos a ler dados das fontes e inseri-los no banco. Até mais!
Vamos continuar a implementação do projeto de carga de dados no banco de dados da escola BitByte.
Neste vídeo, vamos configurar a tabela de alunos
no MySQL. Vamos preparar essa tabela para receber dados do arquivo Alunos.csv
, que contém informações essenciais como o nome e e-mail de cada pessoa. Essa estrutura é importante para que o processo de importação ocorra de forma organizada e precisa.
Para que a importação do arquivo Alunos.csv
seja bem-sucedida, precisamos definir corretamente os tipos de dados e aplicar as restrições à tabela de alunos
para garantir a integridade dos dados. Sem essas configurações, a importação pode resultar em dados inconsistentes ou duplicados.
alunos
A fonte do arquivo de alunos é um CSV chamado Alunos.csv
. É um arquivo texto no formato plano, onde a primeira linha contém o cabeçalho com os campos Nome
e Email
e os dados separados por ponto e vírgula.
Precisamos ler os dados desse arquivo e colocá-los na tabela de alunos
. Vamos recorrer à IA para saber como fazer isso, através do seguinte prompt:
Tenho um arquivo chamado Alunos.csv com os seguintes dados (Veja uma amostra abaixo):
Nome;Email
Ana Maria Souza;ana.souza@bitbyte.com
Carlos Eduardo Silva;carlos.silva@bitbyte.com
Fernanda Lima;fernanda.lima@bitbyte.com
João Pedro Santos;joao.santos@bitbyte.com
E a estrutura da tabela Alunos no MySQL é:
CREATE TABLE Alunos (
id_aluno INT PRIMARY KEY AUTO_INCREMENT,
nome VARCHAR(100),
email VARCHAR(100)
);
Por favor, gere o comando MySQL para ser executado em um script do MYSQL WORKBENCH que importe os dados desse arquivo CSV para a tabela Alunos usando o MySQL Workbench.
Vamos copiar esse texto, colar no Gemini e conferir a resposta. A IA explica uma forma de fazer isso através de comandos visuais no Workbench, mas também fornece os comandos SQL necessários:
LOAD DATA INFILE 'C:/caminho/para/seu/arquivo/Alunos.csv'
INTO TABLE Alunos
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
Vamos copiar esse grupo de comandos, criar um novo script no ambiente e colar os comandos sugeridos pela IA.
No primeiro comando, devemos substituir o caminho entre aspas pelo diretório onde o arquivo Alunos.csv
está gravado. No nosso caso, será o caminho C:/MySQL_IA/fontes/Alunos.csv
, lembrando de trocar as barras invertidas (\
) do Windows para barras normais (/
).
Feito isso, podemos executar os comandos para verificar se os dados serão salvos na tabela. Ao tentar rodar, encontramos o erro:
Error Code: 1290. The MySQL server is running with the --secure-file-priv option, so it cannot execute this statement.
Isso significa que essa opção --secure-file-priv
não permite ler dados do arquivo Alunos.csv
. Vamos copiar essa mensagem de erro, clicando com o botão direito sobre essa linha de output e escolher a opção "Copy Response". Vamos colá-la no script como comentário.
Não sabemos resolver isso, mas a IA pode nos ajudar. Para isso, usaremos um segundo prompt:
Estou tentando executar o comando de importação de dados de um arquivo CSV no MySQL Workbench, mas recebo a seguinte mensagem de erro:
Error Code: 1290. The MySQL server is running with the --secure-file-priv option so it cannot execute this statement.
Como posso resolver esse problema e permitir que o MySQL execute o comando de importação do arquivo CSV corretamente? Quais ajustes preciso fazer nas configurações do MySQL?
A IA explica que o erro indica que o servidor está configurado com a opção --secure-file-priv
, que restringe os diretórios de onde o servidor pode carregar os arquivos.
Para contornar essa medida de segurança, precisamos configurar esse parâmetro no arquivo my.ini
, que é o arquivo de configuração do MySQL, indicando o caminho do diretório. Depois disso, precisamos reiniciar o serviço do MySQL.
Para modificar esse parâmetro, precisamos primeiro encontrar onde o arquivo my.ini
está localizado. A IA não informa, mas podemos perguntar onde encontrá-lo:
Onde eu acho, no meu servidor WINDOWS, o diretório onde o MYSQL salva o arquivo my.ini?
Durante o curso, talvez seja necessário utilizar prompts que não foram planejados, pois as respostas da IA não são iguais todas as vezes.
O Gemini indica que o local mais comum do arquivo my.ini
é no caminho C:/ProgramData/MySQL/MySQL Server [versão]
ou C:/Program Files/MySQL/MySQL Server [versão]
.
No nosso caso, encontramos o arquivo no C:/ProgramData/MySQL/MySQL Server 8.0
. Abrimos o arquivo my.ini
com um editor de texto e buscar a palavra secure-file-priv
.
Atualmente, o diretório padrão do secure-file-priv
é C:/ProgramData/MySQL/MySQL Server 8.0/Uploads
. Podemos tanto copiar o arquivo Alunos.csv
para o diretório padrão quanto especificar que os arquivos externos estarão no diretório onde os salvamos.
No nosso caso, o diretório é C:/MySQL_IA/fontes
. Vamos copiar o caminho do diretório e ajustar no arquivo my.ini
.
my.ini
:
--secure-file-priv = "C:/caminho/para/seu/diretório"
Pode ser necessário abrir o editor de texto no modo administrador para salvar o arquivo my.ini
, pois o diretório onde ele está salvo pode exigir permissões de administrador.
Após fazer modificações no my.ini
, é necessário parar e reiniciar o serviço do MySQL. Na barra de pesquisa, buscamos pelos "Serviços" da máquina. Nele, vamos selecionar o "MySQL 8.0" e clicar no botão "Reiniciar o serviço".
Voltando ao MySQL Workbench, vamos tentar executar novamente o comando LOAD DATA INFILE
. Desta vez, encontramos outro erro:
Erro Code: 1366. Incorrect integer value 'Ana Maria Sousa' for column 'idaluno' at row 1.
O arquivo CSV tem a primeira coluna como Nome
e a segunda como Email
, mas a tabela de alunos
tem três colunas: id_aluno
, nome
e email
.
Não estamos carregando o id_aluno
no CSV porque é um campo de autoincremento. Logo, as duas primeiras colunas do CSV devem ser gravadas nas duas últimas colunas da tabela.
Vamos verificar se conseguimos especificar isso no comando LOAD DATA INFILE
, recorrendo à IA novamente por meio do prompt:
Estou tentando importar os dados do arquivo `alunos.csv` para a tabela `Alunos`, mas estou enfrentando um problema. A primeira coluna do CSV contém o nome do aluno, enquanto a chave primária da tabela, chamada `id_aluno`, é um campo auto-incremento. Ao executar o processo de importação, recebo o seguinte erro:
`Error Code: 1366. Incorrect integer value: 'Ana Maria Souza' for column 'id_aluno' at row 1.`
O MySQL está tentando interpretar o nome do aluno como um valor para a coluna `id_aluno`, mas, como `id_aluno` é autoincremento, por que preciso incluir esse campo no arquivo CSV? Além disso, como posso corrigir esse problema, garantindo que a coluna `nome` do CSV seja mapeada para o campo `nome` da tabela `Alunos` e a coluna `email` do CSV seja mapeada corretamente para o campo `email` da tabela `Alunos`?
A IA sugere um parâmetro extra para o comando LOAD DATA INFILE
:
LOAD DATA INFILE 'C:/caminho/para/seu/arquivo/Alunos.csv'
INTO TABLE Alunos
FIELDS TERMINATED BY ';'
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 LINES;
(@nome, @email)
SET nome = @nome, email = @email
Vamos copiar o script sugerido, colar no MySQL Workbench e executá-lo. Funcionou! Não houve erro. Vamos verificar o conteúdo da tabela de alunos
:
SELECT * FROM alunos;
Agora, a tabela alunos
já contém dados:
id_aluno | nome | |
---|---|---|
1 | Ana Maria Souza | ana.souza@bitbyte.com |
2 | Carlos Eduardo Silva | carlos.silva@bitbyte.com |
3 | Fernanda Lima | fernanda.lima@bitbyte.com |
4 | João Pedro Santos | joao.santos@bitbyte.com |
... | ... | ... |
No próximo vídeo, descobriremos que esse script ainda tem um problema e verificaremos se a IA consegue nos ajudar a resolvê-lo.
O curso MySQL com IA: transferindo dados de fontes externas possui 202 minutos de vídeos, em um total de 41 atividades. Gostou? Conheça nossos outros cursos de IA para Dados em Inteligência Artificial, ou leia nossos artigos de Inteligência Artificial.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.