Ir para conteúdo
bradry

Como continuar uma extração de onde parei ?

Recommended Posts

Eae galera tranquilo ?

 

Sou novo no SQL. E estou usando bastante banco agora na empresa e tenho a seguinte dúvida..

 

Tenho uma base de 1 milhão de registros formados de CPF, NOME e TELEFONE.

 

Tenho que extrai 10 mil registros por dia. Como faço para continuar de onde parei ? por exemplo, extrai  20 mil reg. é depois como faço pra pegar da linha 20 mil até o 30 mil ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como se dá esta extração ?

De onde para onde ?

Esta tabela origem tem alguma chave ?

Qual a razão dos "10 mil registros por dia" , não é viável importar tudo ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta.

 

Esta tabela origem tem alguma chave ?

 

Não. Foi feita de maneira muito simples a principio para somente consulta, não tem nada de muito complexo ainda, mas pretendo melhora lá.

 

Qual a razão dos "10 mil registros por dia" , não é viável importar tudo ?

 

Eu posso importar tudo sim mas queria aprender mais para fins de aprendizado pois tbm tenho arquivos de vão muito além de 1milhão.

 

Suas outras duas perguntas não entendei desculpe

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom uma solução possível seria :
 

select cpf,nome,telefone
from <tabela_origem>
where not exists (select null
                  from   <tabela_destino>
                  where <tabela_destino>.cpf = <tabela_origem>.cpf)
limit 10000

mas dependendo do ambiente , índices etc , esta pode ser inviável.

 

com mais detalhes seria possível pensar uma solução melhor.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelo retorno !

 

Vou tentar melhorar a estrutura dessa tabela para melhorar a consulta.

 

Tem alguma dica do que posso utilizar nessa nova criação para melhorar ?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

índices , estatísticas atualizadas etc

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta,

 

Depois de alguns dias estudando consegui melhorar a estrutura do meu banco deixei da seguinte forma.

image.png.5acbf9bab54dda2a6cb0fe555f2a7e15.png

 

ID esta com AI, ZF, P Key.

 

Só que tem um porém, eu preciso pegar somente os números que iniciam com 21, pra isso eu utilizo a query abaixo

 

select Tel_1
from base_pre
where  substr(TEL_1,1,2) = '21';

 

Até aqui consigo me virar. Agora eu queria controlar essa saída de dados de melhor forma utilizando a coluna Data_exp

 

Teria alguma forma de eu colocar a data nos casos que peguei delimitado ao inicio 21 e inserir na coluna Data_exp  ?

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
Citar

 

Até aqui consigo me virar. Agora eu queria controlar essa saída de dados de melhor forma utilizando a coluna Data_exp

 

Teria alguma forma de eu colocar a data nos casos que peguei delimitado ao inicio 21 e inserir na coluna Data_exp  ?

 

 

Desculpe , não entendi o problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Queria inserir a data nos dados que já extrai

 

Por exemplo, para pegar o inicio 21 faço a substr.

 

select Tel_1
from base_pre
where  substr(TEL_1,1,2) = '21';

 

Depois que retorna o resultado, quero utilizar somente 100 linhas. Minha dúvida e a seguinte , como posso colocar a data nas 100  primeiras linhas ? 

 

Se eu não tivesse o critério do inicio 21 usaria isso

 

UPDATE teste
SET data_exp = "2019-06-18"
WHERE  ID BETWEEN 1 and 100;

 

Tem alguma ideia de como poderia fazer isso ?

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por ILR master
      Fala pessoal.
       
      Seguinte:
       
      Quero selecionar duas tabelas e mostrar com resultados intercalados. Abaixo segue um código explicando para vcs terem uma ideia.
       
      $consulta = "SELECT A.*, B.* FROM tabela1 A, tabela2 B'";
      $resultado = mysqli_query($conexao, $consulta) or die ("erro");
      while($busca = mysqli_fetch_array($resultado)){
       
      print $busca['cod_evento']; --> traz o código da tabela1 
      print $busca['titulo_evento']; -->  traz o titulo da tabela1
      print $busca['cod_noticia']; --> traz o código da tabela2
      print $busca['titulo_noticia']; --> traz o tituloda tabela2
       
      }
       
      Espero que entendam. Grato
       
    • Por gersonab
      Bom dia
      estou com uma dúvida de como proceder, tenho uma tabela de categoria e uma de subcategoria, a categoria pode ter várias subs, até ai tranquilo, quando faço update de uma sub altero normalmente a quantidade deste, até aí normal, porém me deparei com uma situação um pouco diferente, vou tentar ser o mais claro possível, de certa forma algumas subs são comuns só mudando o nome praticamente, aí eu preciso que ao efetuar o update em umas destas este ocorra nas demais, tipo:
       
      Se o id da sub for 5 , eu preciso fazer o mesmo update nos ids 6 e 7 ;
       
      Se o id da sub for 9 , eu preciso fazer o mesmo update no id 10
       
      se for 2 , fazer o update somente neste
       
      ainda não estou conseguindo ver uma lógica para isso, e ou uma nova coluna para cadastrar em comum nestes casos.
       
      qual seria a melhor opção
    • Por JoaoSilva75
      oi pessoal
       
      se eu entrar no link dos desenvolvedores php pesquisasar quem é programador e enviar uma mesma mensagem para uns 6 ou 8 membros do forum serei advertido   ou é spam ???????
       
      procuro um programador php para me fazer algo 
       
      mas não tem como postar aqui nessa sessão
       
    • Por clovis.sardinha
      Tenho uma consulta de autocomplete no bd que funciona no servidor local e não roda no servidor da web. 
      Ao enviar a consulta no servidor local  aparece no console :Fetch terminou o carregamento: GET ".../Cidade?cidade=sao%20paulo". A pesquisa é feita normalmente.
      Quando mando a mesma pesquisa para o servidor web(locaweb) aparece no console: Fetch terminou o carregamento: GET "..../Cidade?cidade=sao%2520paul".
      O número 25 aparece só no servidor web. Pelo que pesquisei 25 significa %, ou seja, está duplicando o caractere %. 
      Não consegui utilizar nenhuma função para evitar que isto ocorra. Alguém sabe se há alguma configuração no servidor web que possa ser alterada para evitar essa duplicação?
       
    • Por gersonab
      Boa tarde, estou quebrando a cabeça aqui para somar os dados agrupados de vários itens distintos de uma tabela e inserir em outra. tipo :
      $consulta31 = $pdo->query("SELECT SUM(valoror) AS val1, SUM(metros) AS metr, orc, idcatc, idmate FROM orcamencli WHERE orc=$orc GROUP BY idcatc, idmate"); $user331 = $consulta31->fetch(PDO::FETCH_ASSOC); $orcx = $user331['orc']; $idcatcx = $user331['idcatc']; $val1x = $user331['val1']; $metrx = $user331['metr']; $idmatex = $user331['idmate']; o resultado de cada item agrupado eu faria um outro calculo separado para inserir em outra tabela, tipo ...
      a tabela acima eu teria algo assim :
       
      orcx = 01 - 01 - 01 - 01 - 01 - 01 - 01 - 01 - 01
      idcatcx = 11 - 11 - 11 - 11 - 11 - 11 - 11 - 11 - 11
      val1x = 1,00 - 1,00 - 3,00 - 3,00 - 3,00 - 1,00 - 3,00 - 1,00 - 2,00
      metrx =  01 - 01 - 03 - 03 - 03 - 01 - 03 - 01 - 02
      idmatex =  11 - 11 - 21 - 21 - 21 - 31 - 31 - 31 - 31
       
      preciso inserir  na outra tabela o seguinte :
      orc = 01 - 01 - 01
      idcatc = 11 - 11 - 11
      val1 = 2,00 - 9,00 - 7,00 ( aqui não é só a soma dos valores , existe um outro cálculo )
      metr =  02 - 09 - 07
      idmate =  11 -  21 -  31
       
       a dúvida é --> como inserir estes valores separados de uma única vez em outra tabela.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.