Projeto SQLite com a linguagem R.

Se você está começando com R e RStudio e quer aprender a trabalhar com bancos de dados locais, o projeto SQLite com R é uma ótima forma de praticar. Neste projeto, você vai criar, inserir, atualizar, remover e consultar dados.


O que é SQLite?

O SQLite é um banco de dados relacional leve, que não precisa de servidor. Ele salva os dados em arquivos simples (.db) e é perfeito para projetos pequenos ou médios, análises de dados e protótipos de sistemas.


Estrutura do projeto:


project-sqlite-r/
├── main.R                  # Arquivo principal (executa todo o fluxo)
├── source-sqlite/           
├    ├── db_connection.R    # Funções de conexão e desconexão
├    ├── db_schema.R        # Criação do esquema (tabelas)
├    ├── db_operations.R    # Inserção, atualização e exclusão
├    └── db_queries.R       # Consultas ao banco
├── exemplo.db              # Banco de dados SQLite (gerado automaticamente)
├── .Rprofile
├── .gitignore
├── README.md
├── project-sqlite-r.Rproj
└── renv.lock               # Arquivo de dependências


Funcionalidades:

  • Criar banco de dados SQLite.
  • Criar tabelas automaticamente.
  • Inserir usuários com nome, email e idade.
  • Atualizar dados de usuários por id.
  • Excluir registros por id
  • Consultar todos os usuários ou buscar por id.

Pré-requisitos:


Como criar o projeto:

1. Criar novo projeto no RStudio - ver microtutorial.

2. Ativar o ambiente virtual renv:


renv::activate()    # No console do RStudio

3. Instalar dependências:


# No console do RStudio

install.packages("DBI")
install.packages("RSQLite")

4. Criar um diretório na raiz do projeto chamado, por exemplo, source-sqlite.

5. Nesse diretório colocaremos quatro arquivos:

  • 1. 'db_connection.R' - arquivo responsável pela conexão com o SQLite.
  • 
    # Instalar pacodes DBI e RSQLite.
    # install.packages("DBI")
    # install.packages("RSQLite")
    # Carregar pacotes necessários. 
    
    library(DBI)
    library(RSQLite)
    
    # Função para abrir conexão com banco SQLite.
    conectar_db <- function(db_file = "exemplo.db") {
      con <- dbConnect(RSQLite::SQLite(), dbname = db_file)
      return(con)
    }
    
    # Função para encerrar conexão.
    desconectar_db <- function(con) {
      dbDisconnect(con)
    }
    
    
  • 2. 'db_schema.R' - arquivo responsável por criar uma tabela no SQLite.
  • 
    # Criar tabela de exemplo (Usuários).
    criar_tabela <- function(con) {
      query <- "
      CREATE TABLE IF NOT EXISTS usuarios (
    	id INTEGER PRIMARY KEY AUTOINCREMENT,
        nome TEXT NOT NULL,
        email TEXT UNIQUE NOT NULL,
        idade INTEGER
      );"
      dbExecute(con, query)
    }
    
    
  • 3. 'db_operations.R' - arquivo responsável por inserir, atualizar e remover dados da tabela.
  • 
    # Arquivo responsável por inserir dados, atualizar dados e
    # remover dados da tabela.
    
    # Inserir novo usuário.
    inserir_usuario <- function(con, nome, email, idade) {
      query <- "INSERT INTO usuarios (nome, email, idade) VALUES (?, ?, ?)"
      dbExecute(con, query, params = list(nome, email, idade))
    }
    
    # Atualizar nome do usuário.
    atualiza_usuario_nome <- function(con, id, novo_nome) {
      query <- "UPDATE usuarios SET nome = ? WHERE id = ?"
      dbExecute(con, query, params = list(novo_nome, id))
    }
    
    # Atualizar email do usuário.
    atualiza_usuario_email <- function(con, id, novo_email) {
      query <- "UPDATE usuarios SET email = ? WHERE id = ?"
      dbExecute(con, query, params = list(novo_email, id))
    }
    
    # Atualizar idade do usuário.
    atualiza_usuario_idade <- function(con, id, nova_idade) {
      query <- "UPDATE usuarios SET idade = ? WHERE id = ?"
      dbExecute(con, query, params = list(nova_idade, id))
    }
    
    # Excluir usuário.
    remove_usuario <- function(con, id) {
      query <- "DELETE FROM usuarios WHERE id = ?"
      dbExecute(con, query, params = list(id))
    }
    
    
  • 4. 'db_queries.R' - arquivo responsável por consultar os dados.
  • 
    # Arquivo responsável por consultar os dados.
    
    # Buscar todos os usuários
    busca_usuarios <- function(con) {
      dbGetQuery(con, "SELECT * FROM usuarios")
    }
    
    # Buscar usuário pelo id.
    usuario_id <- function(con, id) {
      query <- "SELECT * FROM usuarios WHERE id = ?"
      dbGetQuery(con, query, params = list(id))
    }
    
    

Por fim, o arquivo principal - 'main.R' - criado na raiz do projeto:


# O arquivo main.R é responsável pela manipulação do banco de dados.

# Carrega os scripts.

source("source-sqlite/db_connection.R")
source("source-sqlite/db_schema.R")
source("source-sqlite/db_operations.R")
source("source-sqlite/db_queries.R")

# 1. Conectar ao banco.
con <- conectar_db()

# 2. Criar tabela.
criar_tabela(con)

# Insere usuários.
inserir_usuario(con, "Maria Teresa", "teresa@gmail.com", 3)
inserir_usuario(con, "Carlos da Costa", "carlos@gmail.com", 48)
inserir_usuario(con, "Maria da Costa", "maria@gmail.com", 75)
inserir_usuario(con, "Soares da Costa", "soares@gmail.com", 45)
inserir_usuario(con, "Jose Carlos", "jose@gmail.com", 41)

# Busca todos os usuários.
print(busca_usuarios(con))

# Busca usuário com id 2.
print(usuario_id(con, 2))

# Atualizar nome, email e idade do id 4.
atualiza_usuario_nome(con, 4, "Soares Costa")
atualiza_usuario_email(con, 4, "scosta@gmail.com")
atualiza_usuario_idade(con, 4, 36)

# Busca todos os usuários.
print(busca_usuarios(con))

# Excluir usuário.
remove_usuario(con, 5)

# Busca todos os usuários.
print(busca_usuarios(con))

# Desconectar
desconectar_db(con)


Conclusão

O projeto SQLite com R é um excelente ponto de partida para quem deseja aprender a manipular bancos de dados de forma prática e organizada dentro do RStudio. Trabalhar com um código modularizado, dividido em arquivos específicos para conexão, operações e consultas, facilita a manutenção e amplia a reutilização em outros projetos. Além disso, o uso do SQLite torna possível criar aplicações leves, rápidas e que não dependem de servidor, ideal para análises locais ou pequenos sistemas. Muito obrigado e até a próxima.

Repositório do projeto: https://github.com/jcarlossc/project-sqlite-r

Comentários

Postagens mais visitadas deste blog