#' @title Função que orquestra as demais funções para realizar o tratamento e organização dos dados do CNPJ
#'
#' @description Essa função foi desenvolvida utilizando como elementro central uma função complementar
#' chamada 'readr::read_lines_chunked', com o propósito de ler o arquivo de 95Gb em partes de
#' 10.000, 100.000 ou 1.000.000 de linhas por vez.
#'
#' @param path_arquivos_txt Caminho (path) dos arquivos com a base de dados do CNPJ.
#' @param localizar_cnpj Vetor com o número dos CNPJ que se deseja filtrar e obter os dados.
#' O valor padrão é "NAO", o que força ao tratamento de todas as linha da base de dados
#' @param n_lines Número de linhas que podem ser iteradas por vez: 10000, 100000 ou 1000000
#' @param armazenar Indica a forma de armazenamento dos dados: 'csv' ou 'sqlite' (OBS1: O delimitador do CSV é o simbolo: "#'),
#' (OBS2: Preferencialmente, defina a pasta de trabalho da sessão 'Working Directory' na mesma em que estão localizados os arquivos
#' da base de dados no CNPJ)
#'
#' @examples
#' \dontrun{
#' qsacnpj::gerar_bd_cnpj(path_arquivos_txt = "D:/qsa_cnpj",
#' localizar_cnpj = "NAO",
#' n_lines = 100000,
#' armazenar = "csv")
#'
#'
#'# Exemplo com número de CNPJ, entre aspas (""), do Banco do Brasil, Banco do Nordeste,
#'# Banco da Amazônia e Caixa Econômica
#'
#' qsacnpj::gerar_bd_cnpj(path_arquivos_txt = "D:/qsa_cnpj",
#' localizar_cnpj = c("00000000000191", "07237373000120",
#' "00360305000104", "04902979000144"),
#' n_lines = 100000,
#' armazenar = "sqlite")
#'}
#'
#'
#' @export
gerar_bd_cnpj <- function(path_arquivos_txt,
localizar_cnpj = "NAO",
n_lines = 100000,
armazenar = "csv") {
path_arquivos_txt <- dir(path_arquivos_txt)
if(is.null(path_arquivos_txt)) {
stop("Defina o caminho (path) do arquivo da base de dados do CNPJ")
}
#!!! Criar uma função para verificar se os CNPJ na variável 'localizar_cnpj' são válidos
if(!n_lines %in% c(10000, 100000, 1000000)) {
stop("Escolha a opção 10000, 100000 ou 1000000 para a quantidade de linhas a serem analisadas por vez!")
}
if(!armazenar %in% c("csv", "sqlite", "sqlserver", "oracle", "mysql")) {
stop("Escolha a opção 'csv', 'sqlite', 'sqlserver', 'oracle' ou 'mysql' para armazenar os dados!")
}
if(dir.exists("bd_cnpj_tratados") == TRUE){
stop("Apague o diretório 'bd_cnpj_tratados'. Deixe apenas os arquivos descompactados da Receita Federal no diretório!")
}
if(dir.exists("bd_cnpj_tratados") == FALSE){
dir.create("bd_cnpj_tratados")
print("Pasta 'bd_cnpj_tratados' criada com sucesso!")
}
if (file.exists(file.path("bd_cnpj_tratados", "bd_dados_qsa_cnpj.db"))){
stop(paste("O arquivo 'bd_dados_qsa_cnpj.db' já existe no diretório 'bd_cnpj_tratados'.",
"Para realizar a primeira execução do código com o SQLite, é preciso apagar ou mover o arquivo do diretório."))
}
if (file.exists(file.path("bd_cnpj_tratados", "cnpj_dados_cadastrais_pj.csv"))) {
stop(paste("O arquivo 'cnpj_dados_cadastrais_pj.csv' já existe no diretório 'bd_cnpj_tratados'.",
"Para realizar a primeira execução do código com CSV, é preciso apagar ou mover o arquivo do diretório."))
}
print(paste("Iniciando o tratamento e consolidação dos dados do CNPJ.",
"Esse processo pode levar entre 4h a 5h, dependenndo da configuração do computador!"))
obter_dados_qsa(path_arquivos_txt,
localizar_cnpj,
n_lines,
armazenar)
print(paste("Base de Dados do CNPJ gerada com Sucesso! Tabelas geradas:",
"`dados_cadastrais_pj`, `dados_socios_pj` e `dados_cnae_secundario_pj`"))
print("Adicionando na base a tabela com dados dos Entes Públicos Federais, Estaduais e Municipais!")
obter_dados_cnpj_entes_publicos(armazenar)
print("Tabela `tab_cnpj_entes_publicos_br` gerada com Sucesso!")
print("Adicionando na base a tabela com Código e Nome da Qualificação dos Responsáveis!")
obter_dados_qualificacao_responsavel(armazenar)
print("Tabela `tab_qualificacao_responsavel_socio` gerada com Sucesso!")
print("Adicionando na base a tabela com Código e Nome da Situação Cadastral!")
obter_dados_situacao_cadastral(armazenar)
print("Tabela `tab_situacao_cadastral` gerada com Sucesso!")
print("Adicionando na base a tabela com Código e Nome da Natureza Jurídica!")
obter_dados_natureza_juridica(armazenar)
print("Tabela `tab_natureza_juridica` gerada com Sucesso!")
print("Adicionando na base a tabela com os CNAEs!")
obter_dados_cnae(armazenar)
print("Tabela `tab_cnae` gerada com Sucesso!")
print("Adicionando na base a tabela com os Códigos dos Municípios do SIAFI-IBGE!")
obter_dados_codigo_municipios_siafi(armazenar)
print("Tabela `codigo_municipios_siafi` gerada com Sucesso!")
message("Fim do Processamento: Base de Dados do CNPJ gerada com Sucesso!")
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.