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 Diego-SLP
      Bom dia,
       
      Estou fazendo uma tela de relatorios de registro de ponto e não estou conseguindo totalizar as horas conforme trago do banco de dados, se alguem puder me ajudar.
       
      SELECT p.cod_obra,f.nome,o.obra, TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(p.totalhora))),'%H:%i') AS hora, TIME_FORMAT(SEC_TO_TIME(SUM(TIME_TO_SEC(p.totalhoraextra))),'%H:%i') AS horaextra, f.funcao FROM rh_pontoFuncionario p, rh_funcionario f, rh_obra o WHERE p.data BETWEEN '2020/10/01' AND '2020/11/20' AND p.cod_obra = '20056' AND p.cod_func = f.cod AND p.cod_obra = o.cod GROUP BY p.cod_obra, f.nome Essa query me traz COD_OBRA,NOME,OBRA,HORA,HORAEXTRA,FUNCAO e eu gostaria de TOTALIZAR o campo HORA e HORAEXTRA somando todas as linhas mas não consigo
    • By landerbadi
      Olá pessoal, boa noite
       
      Tenho uma tabela no banco de dados mysql com três colunas (id, audio, tocado) e um player de audio html5 simples.
       
      <audio controls>
        <source src="horse.ogg" type="audio/ogg">
        <source src="horse.mp3" type="audio/mpeg">
      </audio>
       
      Fiz uma consulta no bd para me retornar um (1) registro. Com base nessa consulta o player toca o audio correspondente.
      Preciso fazer com que após o término do audio seja gravado na coluna 'tocado' no bd a palavra 'OK'.
      Tem como fazer isso?
    • By Matheus B. Siqueira
      Olá, tento fazer uma requisição para atualização de item do accordion no mysql, porém apenas um item é atualizado.
      O código funciona da seguinte forma: É buscado perguntas referente ao vídeo selecionado no carousel, logo após, o código da Amostra de Código 1, cria os cards dentro do modal. Cada card é referente a uma pergunta diferente registrada no Banco de Dados.
      Porém, ao tentar atualizar um item do MYSQL, dentro do card, no textarea, o primeiro item (1º pergunta) desse accordion é atualizado, o segundo item (2º pergunta) não é atualizado.
      Cada pergunta possui um id no MYSQL, bem como, um assunto, uma resposta, uma pergunta... de acordo com a Figura 01.
      Vale ressaltar que, de acordo com a Amostra de Código 2, é buscado juntamente com o AJAX, todas as perguntas referente ao vídeo selecionado no carousel.
      Amostra de Código 1:
      $(document).ready(function() { $(function() { $('#responder_duvidas').click(function() { var codigoVideo2 = $('.carousel-item.active').attr('data-link_video'); var accordion2 = ""; $.post("buscar_duvida_monitor_resp.php", { codigo_video_monitor: codigoVideo2, }, function(data2, status) { if (data2 !== "Fail") { $("#dynamic_accordion #accordion").html(accordion2); // Adiciona essa linha $.each(JSON.parse(data2), function (index2, duvida3) { accordion2 += '<div class="card" style="margin: 5px">'; accordion2 += '<div class="card-header" id="heading'+index2+'">'; accordion2 += '<h5 class="mb-0">'; accordion2 += '<button class="btn btn-link" data-toggle="collapse" data-target="#collapse'+index2+'" aria-expanded="true" aria-controls="collapse'+index2+'">'; accordion2 += duvida3.assunto; accordion2 += '</button>'; accordion2 += '</h5>'; accordion2 += '</div>'; accordion2 += '<div id="collapse'+index2+'" class="collapse" aria-labelledby="heading'+index2+'" data-parent="#accordion">'; accordion2 += '<div class="card-body">'; accordion2 += '<div style="background: #ddd; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += duvida3.pergunta; accordion2 += '</div>'; accordion2 += '<hr>'; accordion2 += '<div style="background: #fff; color #fff; padding: 10px 20px; border-radius: 5px">'; accordion2 += '<form method="post" enctype="multipart/form-data">'; accordion2 += '<textarea class="form-control" name="resposta" id="resposta" required>'+duvida3.resposta+'</textarea>'; accordion2 += '<input type="hidden" id="id_duvidas" value="'+duvida3.idduvidas+'" />'; accordion2 += '<br><button type="button" id="enviar_resposta" class="btn btn-success btn-sm">Enviar resposta</button>'; accordion2 += '</form>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; accordion2 += '</div>'; $("#dynamic_accordion #accordion").html(accordion2); }); } }); }); $(document).on("click", "#enviar_resposta",function(){ $.ajax({ url: "atualizar_resposta.php", method: "POST", data: { resposta: $('#resposta').val(), idduvidas: $('#id_duvidas').val() }, success: function(res) { var data = JSON.parse(res); alert((data.success == true) ? "Pergunta atualizada" : "Pergunta não atualizada"); $('.modal-backdrop').remove(); return; } }); // fecha modal $("#modalDuvidas").modal("hide"); }); }); }); Figura 1:

       
       
      Amostra de Código 2:
      <?php if (isset($_POST['idduvidas']) && isset($_POST['resposta'])) { $id_resposta = $_POST['idduvidas']; $resposta = $_POST['resposta']; $servidor = 'localhost'; $usuario = 'root'; $senha = 'root'; $banco = 'onteach'; $conexao = mysqli_connect($servidor,$usuario,$senha,$banco); $consulta2 = "UPDATE duvidas SET duvidas.resposta = '$resposta' WHERE duvidas.idduvidas = '$id_resposta'"; die(json_encode(['success'=>(mysqli_query($conexao, $consulta2))])); } Figura 2 (FIGURA COMPLEMENTAR APRESENTANDO O ACCORDION NO WEBSITE)

       
      Por fim, este tópico auxilia em um tema que é específico, porém, pode ser utilizado para outros fins de programação, bem como, a utilização de definição de váriantes em accordion com maiores itens.
      Desde já, agradeço.
       
    • By gersonab
      tenho uma data no BD , gostaria de mostrar ela 15 dias antes, montando um alerta 15 dias antes desta data
      atualmente utilizo assim, porém me mostra 15 dias após.
      $data = DateTime::createFromFormat('d/m/Y', $datab); $data->add(new DateInterval('P15D')); tipo:
      se eu colocar a data 24/11/2020 , ela vai me mostrar 09/12/2020 , quando preciso q mostre 09/11/2020.
    • By david2007
      Endpointer Framework é um Framework PHP para construção de APIs REST com Programação Procedural.
       
      Todas as regras de negócio são implementadas como Stored Procedures.
       
      http://endpointer.com
       
      Endpointer Framework é Código Aberto sob a licença MIT

×

Important Information

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