Skip to content

Importa CSVs para o banco de dados com baixa implementação de código

Notifications You must be signed in to change notification settings

eudovic/import-csv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 
 
 

Repository files navigation

IMPORT CSV PLUGIN

O plugin é de uso fácil e baixa implementação de código. A teoria que o envolve é simples.

  • Insira o acesso a lib em sua view.
  • O plugin criará no body um botão ao lado direto que poderá ser configurado através de options para ganhar uma nova posição vertical.
  • Ao clicar neste botão o evento insere na pagina uma modal de bootstrap com um form para importação do CSV.
  • CNeste momento é possível escolher o arquivo CSV assim como definir o separador definido em sua exportação.
  • Ao clicar no submit o arquivo é lido pelo JS e mostra sua primeira linha para que então seja possível relacionar as tabelas(denfinidas em options).
  • Após a relação das tabelas, ao clicar no botão de envio o request envia ao backend (denfinido em options) os parametros a serem tratados e posteriormente inseridos no BD.

Dependências

O Plugin requer algumas livravias que devem sem importadas antes do mesmo. São elas:

  • JQuery
  • Bootstrap
  • FontAwesome

Instalação

Para usar o plugin é necessário importá-lo de forma que a pagina desejada tenha acesso aos script.

<script src="../importCsvTv1.js"></script>

Uso

Para iniciar o plugin é preciso apenas iniciar o código em um bloco de script

let csv = new importCsv({
  modalTitle: "Importar Whitelist",
  buttonTitle: "Importar",
  topExcelPosition: "200",
  serial:0,
  routeBackEnd: "/backend_url",
  tabelas: ["nome", "email", "diretoria", "unidade", "empresa"],
  params: { q: "importarCsv" },
});

Options

  • modalTitle: "Importar Whitelist", //Titulo da modal
  • buttonTitle: "Importar", // Titulo do botão que leva a ação de finalizar a importação
  • topExcelPosition: "200", // distancia em pixel do topo ao botão de inicio
  • serial: 0, // define se as gravações no bd serão feitas em uma única query ou em uma serie delas
  • routeBackEnd: "/backend_url", // rota para enviar os dados de importação (backend)
  • tabelas: ["nome", "email", "diretoria", "unidade", "empresa"], //tabelas liberadas para importação
  • params: { q: "importarCsv" }, // parametros adicionais a serem enviados ao backend

Exemplo BackEnd PHP

ON CONTROLLER

if ($q == "importarCsv") {
       $Loader->Class('usuario');
       $c = new Usuario;
       $res = $c->importCsv($_REQUEST);
      $Loader->JSON($res);
  }
 function importCsv($dados) {

        $tabelas = $dados['tabelas'];
        $data = $dados['data'];
        if ($dados['serial']==0) {
            $query="INSERT IGNORE INTO usuarios (";
            $countTrHead=1;
            foreach($tabelas as $tabela){
                count($tabelas) > $countTrHead ?  $query.=$tabela."," :  $query.=$tabela.")";
                $countTrHead++;
            }
            $query .= "VALUES";
            $countData = 1;
            foreach ($data as $trs) {
                $countTrBody = 1;
                $query .= "(";
                foreach($trs as $tr) {
                    if(count($data) > $countData) {
                        count($trs) > $countTrBody ?  $query .= "'" . $newPhrase = str_replace("'", " ", $tr) . "'" . "," :  $query .= "'" . str_replace("'", " '", $tr)."'"."),";
                    } else {
                        count($trs) > $countTrBody ?  $query .= "'" . str_replace("'", " '", $tr) . "'" . "," :  $query .= "'" . str_replace("'", " '", $tr)."'".");";
                    }
                    
                    
                    $countTrBody++;
                }
                $countData++;
            }
        } else {
            foreach ($data as $trs) {
               
                $query = "INSERT IGNORE INTO usuarios (";
                $countTrHead=1;
                foreach($tabelas as $tabela){
                    count($tabelas) > $countTrHead ?  $query.=$tabela."," :  $query.=$tabela.")";
                    $countTrHead++;
                }
                $query .= "VALUES";
                $countData = 1;
                $countTrBody = 1;
                $query .= "(";
                foreach ($trs as $tr) {
                    if (count($data) > $countData) {
                        count($trs) > $countTrBody ?  $query .= "'" . $newPhrase = str_replace("'", " ", $tr) . "'"."," :  $query .= "'" . str_replace("'", " '", $tr)."'".");";
                    } else {
                        count($trs) > $countTrBody ?  $query .= "'" . str_replace("'", " '", $tr) . "'"."," :  $query .= "'" . str_replace("'", " '", $tr) . "'".");";
                    }
                    
                    
                    $countTrBody++;
                }
                $countData++;
                 $r = $this->selectDB($query);
                $retorno[] = [
                  'query' => $query,
                  'retorno' => $r
                ];
                sleep(1);
            } 

            return $retorno;
        }
        
        try {
            $r = $this->selectDB($query);
            return $r ;
        } catch (Exception $e) {
            return false;
       }

        return $r;
     }

About

Importa CSVs para o banco de dados com baixa implementação de código

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published