Jump to content
Luckshor

Converter Excel para INSERT SQL

Recommended Posts

Olá pessoal, tudo bem?
 

Sou iniciante no MySQL, essa semana veio uma dúvida de 10 milhões de dólares.

 

O Chefinho querido me entregou uma planilha excel com 554 mil registros e me pediu para inserir isso na tabela para fazer levantamento de algumas informações.

Aiiii me vêm aquele dúvida...

 

Fazer 554 mil INSERT INTO (') ???

 

INSERT INTO `tab_teste_cliente` (`id_cliente`, `cnpj`, `razao_social`) VALUES ('NULL,'12345678901234','Empresa Linda');

Massssss... quando eu exporto uma tabela no MySQL, ele faz aqueles inserts com 200 valores.

Isso torna o INSERT mais rápido é melhor certo?

Então há alguma forma de converter o Excel para um arquivo SQL com esses Inserts múltiplos e facilitar minha vida?  

Algum site, script, gambiarra, subterfúgio técnico ou contato divino para fazer isso?

 

 

Obrigado, pela ajuda pessoal até mais!

Share this post


Link to post
Share on other sites

Luckshor

A pergunta inicial é, você esta apenas utilizando EXCEL e o Banco De Dados MySQL?

 

Existem muitos meios de se trabalhar com as informações, basta você ter em mãos as ferramentas necessárias, dito isso, o meio que eu recomendaria você a fazer este processo é,  transformar a planilha do EXCEL em um formato popular do próprio EXCEL que é o formato CSV opção SALVAR COMO TEM ESSE FORMATO, que nada mais é do que uma planilha que pode ser lida por qualquer interpretador de texto, como o próprio NOTEPAD, ele separa as colunas da tabela do excel por(PONTO E VIRGULA).

 

Por exemplo.

PLANILHA SALDO

COLUNAS Nome          Saldo                Data                  ValorDeclarado          Bloqueio De Saldo

LINHAS     Jose            R$ 1.500,00     15/08/2019    R$ 275,00                     Não

LINHAS     Maria          R$ 10.000,00   01/08/2019    R$ 750.000,00              Sim

 

Planilha acima em formato CSV ficaria

Jose;R$ 1.500,00;15/08/2019;R$ 275,00;Não

Maria;R$ 10.000,00;01/08/2019;R$ 750.000,00;Sim

 

Com esse formato você pode LER pelo comando do PHP abaixo:

 

<?php
$csv = file('teste.csv');
foreach ($csv as $row => $line) {
    $row++;
    $column = str_getcsv($line, ';');
    $sql = "INSERT INTO NOME_TABELA (NomeColunaTabela1, NomeColunaTabela2, NomeColunaTabela3, NomeColunaTabela4)
                             VALUES ('".$column[0]."', '".$column[1]."', '".$column[2]."', '".$column[3]."')";
    $insert = mysql_query($sql);
}
?>

O que o comando acima faz? Simples ele LÊ TODAS AS LINHAS do seu arquivo CSV, uma por uma, para cada linha lida ele monta o INSERT, lembrando que se você tem uma planilha com 50 colunas, você precisa colocar a COLUMN do valor 0 (ZERO) até o valor 49, por exemplo.

 

Pronto, feito isso, a cada INSERT INTO montado, você faz o INSERT na tabela.

 

Se você precisar de uma ajuda por não saber nada de PHP manda um salve que faço um tutorial completo para você fazer isso sem precisar INSTALAR nada na máquina, apenas baixando um "servidor portatil" e os arquivos do PHP para você executar, vou precisar apenas da quantidade de colunas que você tem na planilha.

 

Se a minha resposta for útil não esqueça de agradecer e votar positivo.

Espero ter ajudado de alguma forma.

 

Att
Felipe Guedes Coutinho

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Sapinn
      Estou trazendo os dados do banco de dados e eles estão vindo com problema na acentuação
      uso o seguinte codigo no php
      <?php
      include_once ‘…/php/conexao.php’;
      header(‘Content-Type: text/html; charset=utf-8’);
      mysqli_query($conn,“SET NAMES ‘utf8’”);
      mysqli_query($conn,‘SET character_set_connection=utf8’);
      mysqli_query($conn,‘SET character_set_client=utf8’);
      mysqli_query($conn,‘SET character_set_results=utf8’);
      ?>
      E no html
      Mesmo assim as palavras com acento ficam com aquele erro desgraçado com a interrogação
      Alguem me ajuda ai
    • By Sapinn
      Tenho um form que pergunto o nome, sobrenome, email, idade e telefone de contato. Como faço para verificar se o email digitado já foi cadastrado e retorna na mesma pagina uma mensagem caso ele ja existe ou prosseguir para a area do usuario caso ele não exista sem da refresh na página.
    • By Wanderson Moreira
      bom dia, 

      preciso fazer um select e verificar se o ID do usuário logado existe em em uma coluna do banco de dados
      por exemplo

      ID Usuario: 6
      coluna do banco: 1, 3, 5, 16
       
      O problema é que se eu fizer o select com LIKE ele considera o numero 16 como 1 e 6 invés de considerar um numero só, com isso o usuário 6 acaba sendo incluso no select indevidamente
       
      alguém poderia me ajudar?
    • By Diego-SLP
      Boa tarde,
       
      Tenho um while retornando alguns dados do meu banco e gostaria que nessa tabela a ultima linha fosse a soma da coluna, como posso fazer isso ?
       
      Obrigado
    • By gersonab
      Bom dia, tenho 2 tabelas editáveis em uma div, estas funcionam normalmente, o problema é que o loop não acontece , só carrega sobre 1 item, sendo que este eu posso ter mais itens.
       na página principal tenho:
      <div class="carregadados"></div> function fetch_data() { $.ajax({ url:"../lista/finan.php", method:"POST", success:function(data){ $('.carregadados').html(data); } }); } fetch_data(); a página a ser carregada esta assim:
      <?php session_start(); require_once('config.php'); $output = ''; $idc1=$_SESSION['idc']; $sql01 = "SELECT * FROM porcent WHERE idfcli='$idc1'"; $result = mysqli_query($con, $sql01); while($user41 = mysqli_fetch_array($result)){ // primeiro while onde seleciono os itens da pessoa podendo ter vários $output .= ' <div class="table-responsive mb-4 mt-4"> Aqui vem os dados da pessoa '; $id1= $user41["idproc"]; $sqladv = "SELECT * FROM poradv WHERE procav='$id1'"; $resulta = mysqli_query($con, $sqladv); $output .= ' <table class="table table-bordered table-hover table-striped" style="width:100%"> <thead> <tr> </tr> </thead> <tbody>'; if(mysqli_num_rows($resulta) > 0) { while($usera = mysqli_fetch_array($resulta)){ //segundo while onde tenho os dados de venda em uma tabela editavel $output .= ' <tr> </tr>'; } $output .= ' <tr> // insiro linhas caso precise </tr> '; } else { $output .= '<tr> // caso não tenha nada inserido, posso fazer por aqui </tr> '; } $output .= '</tbody> </table>'; $id2= $user41["idproc"]; $sql = "SELECT * FROM parcelas WHERE procid='$id2' ORDER BY datapar, idpar ASC"; $result = mysqli_query($con, $sql); $output .= ' <table class="table table-bordered table-hover table-striped" style="width:100%"> <thead> <tr> // tabela de pagamentos editavel </tr> </thead> <tbody>'; if(mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_array($result)) { //terceiro while , tabela referente a pagamentos $output .= ' <tr> // tabela pagamentos </tr>'; } $output .= ' <tr> // insiro linhas caso precise </tr> '; } else { $output .= '<tr> // caso não tenha nada inserido, posso fazer por aqui </tr> '; } $output .= '</tbody> </table> </div> '; } echo $output; ?> só esta carregando uma vez , tudo dentro da parte editável esta funcionando, porém no primeiro while só faz 1 loop, os demais estão funcionando perfeitamente.
      desde já agradeço qualquer ajuda.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.