leo_davi 0 Denunciar post Postado Dezembro 17, 2007 Bom pessoal, estou precisando saber se tem como fazer, e se tiver como, umas dicas e instruções de como proceder. Bom tenho um diretório que recebe vários arquivos TXT e nesses arquivos contem instruções SQL, ai vamos lá. Quero fazer o seguinte: Ler todos os arquivos TXT do diretório e executar as instruções SQL. Mas se houver algum drop ou Delete ele pular a linhas e continuar a executar o arquivo. e ao termino da leitura mudar os arquivos de pasta. Nossa acho que é isso. Procurei algo ate achei mas queria uma forma bacana e segura de fazer isso. Abraços e obrigado a todos. Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Dezembro 17, 2007 Como estas instruções estão separadas nos arquivos de texto? Compartilhar este post Link para o post Compartilhar em outros sites
leo_davi 0 Denunciar post Postado Dezembro 17, 2007 Na verdade não é txt e um arquivo SQL Da uma olhada ai Exemplo do arquivo SQL DELETE FROM IMOVEL WHERE ASS_SEQ = '364' AND IMO_DSC_CODIG_OFERT = 'I05648'; REPLACE INTO IMOVEL (ASS_SEQ, IMO_FLG_TRANS, IMO_FLG_TIPO, IMO_FLG_SITUA, IMO_FLG_PADRA_ACABA, IMO_FLG_ENTRE_CHAVE, IMO_FLG_MOBIL, IMO_INT_ANO_CONST, IMO_DSC_ZONEA, IMO_FLT_AREA_UTIL, IMO_FLT_MEDID_FRENT, IMO_FLT_MEDID_FUNDO, IMO_FLG_AREA_LAZER, IMO_INT_QUART, IMO_INT_SALAS, IMO_INT_SUITE, IMO_INT_BANHO, IMO_INT_VAGAS_GARAG, IMO_INT_ELEVA, IMO_INT_ANDAR, IMO_INT_UNIDA_ANDAR, IMO_INT_ANDAR_APE, IMO_FLG_BANHE_BOX, IMO_FLG_CONZI_EQUIP, IMO_FLG_ARMAR_QUART, IMO_FLG_ARMAR_COZIN, IMO_FLG_DCE, IMO_FLG_VARAN, IMO_TXT_DADOS_COMPL, IMO_DSC_ENDER, IMO_DSC_NUMER, IMO_DSC_COMPL, BAI_SEQ, CID_SEQ, IMO_DSC_REGIA, IMO_DSC_ESTAD, IMO_DSC_CEP, IMO_FLT_PRECO, IMO_FLT_CONDO, IMO_FLT_IPTU, IMO_DSC_CODIG_OFERT, IMO_DT_LANCA, CAMINHO_ALTER, IMO_DSC_IMAGE_GRAND_1, IMO_DSC_IMAGE_GRAND_2, IMO_DSC_IMAGE_GRAND_3, IMO_DSC_IMAGE_GRAND_4, IMO_DSC_IMAGE_GRAND_5, IMO_DSC_IMAGE_GRAND_6, IMO_DSC_IMAGE_GRAND_7, IMO_DSC_IMAGE_GRAND_8) Values('364', 'Venda', 'Lote/Área', 'VAGO', '1', 'LIGAR ANTES', NULL, '30', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'ÁREA DE TERRENO COM 743 M2, SENDO 2 FRENTES: PADRE PEDRO PINTO E AV. VILARINHO\n11,0 M FRENTE PADRE PEDRO PINTO\n10,0 M FRENTE AV. VILARINHO\n74,0 M LATERAIS\nZONEAMENTO - ZCVN\n\nREF.: APÓS BANCO BRADESCO E ANTES DA ESTAÇÃO BH-BUS', 'PADRE PEDRO PINTO', '2012', NULL, '14', '1', 'VENDA NOVA', 'MG', '31615310', '180000', NULL, NULL, 'I05648', '2007-12-16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); DELETE FROM IMOVEL WHERE ASS_SEQ = '364' AND IMO_DSC_CODIG_OFERT = 'I06023'; REPLACE INTO IMOVEL (ASS_SEQ, IMO_FLG_TRANS, IMO_FLG_TIPO, IMO_FLG_SITUA, IMO_FLG_PADRA_ACABA, IMO_FLG_ENTRE_CHAVE, IMO_FLG_MOBIL, IMO_INT_ANO_CONST, IMO_DSC_ZONEA, IMO_FLT_AREA_UTIL, IMO_FLT_MEDID_FRENT, IMO_FLT_MEDID_FUNDO, IMO_FLG_AREA_LAZER, IMO_INT_QUART, IMO_INT_SALAS, IMO_INT_SUITE, IMO_INT_BANHO, IMO_INT_VAGAS_GARAG, IMO_INT_ELEVA, IMO_INT_ANDAR, IMO_INT_UNIDA_ANDAR, IMO_INT_ANDAR_APE, IMO_FLG_BANHE_BOX, IMO_FLG_CONZI_EQUIP, IMO_FLG_ARMAR_QUART, IMO_FLG_ARMAR_COZIN, IMO_FLG_DCE, IMO_FLG_VARAN, IMO_TXT_DADOS_COMPL, IMO_DSC_ENDER, IMO_DSC_NUMER, IMO_DSC_COMPL, BAI_SEQ, CID_SEQ, IMO_DSC_REGIA, IMO_DSC_ESTAD, IMO_DSC_CEP, IMO_FLT_PRECO, IMO_FLT_CONDO, IMO_FLT_IPTU, IMO_DSC_CODIG_OFERT, IMO_DT_LANCA, CAMINHO_ALTER, IMO_DSC_IMAGE_GRAND_1, IMO_DSC_IMAGE_GRAND_2, IMO_DSC_IMAGE_GRAND_3, IMO_DSC_IMAGE_GRAND_4, IMO_DSC_IMAGE_GRAND_5, IMO_DSC_IMAGE_GRAND_6, IMO_DSC_IMAGE_GRAND_7, IMO_DSC_IMAGE_GRAND_8) Values('364', 'Venda', 'Lote/Área', 'VAGO', '1', NULL, NULL, NULL, 'ZP2', NULL, '48', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'LOTE TRIANGULAR 1064m2 - PARTE ALTA - ATRÁS CENTRO TREINAMENTO DO CRUZEIRO\n48m DE FRENTE\n46,5m LATERAL DIREITA (FICANDO DE FRENTE PARA O LOTE)\n42,5m LATERAL ESQUERDA\nMURADO LATERAL DIREITA\nSEMI PLANO / PREÇO DE OCASIÃO\n', 'PROFESSOR LIBERALINO SANTANA', NULL, NULL, '102', '1', 'GARÇAS', 'MG', NULL, '57000', NULL, NULL, 'I06023', '2007-12-16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); DELETE FROM IMOVEL WHERE ASS_SEQ = '364' AND IMO_DSC_CODIG_OFERT = 'I06269'; REPLACE INTO IMOVEL (ASS_SEQ, IMO_FLG_TRANS, IMO_FLG_TIPO, IMO_FLG_SITUA, IMO_FLG_PADRA_ACABA, IMO_FLG_ENTRE_CHAVE, IMO_FLG_MOBIL, IMO_INT_ANO_CONST, IMO_DSC_ZONEA, IMO_FLT_AREA_UTIL, IMO_FLT_MEDID_FRENT, IMO_FLT_MEDID_FUNDO, IMO_FLG_AREA_LAZER, IMO_INT_QUART, IMO_INT_SALAS, IMO_INT_SUITE, IMO_INT_BANHO, IMO_INT_VAGAS_GARAG, IMO_INT_ELEVA, IMO_INT_ANDAR, IMO_INT_UNIDA_ANDAR, IMO_INT_ANDAR_APE, IMO_FLG_BANHE_BOX, IMO_FLG_CONZI_EQUIP, IMO_FLG_ARMAR_QUART, IMO_FLG_ARMAR_COZIN, IMO_FLG_DCE, IMO_FLG_VARAN, IMO_TXT_DADOS_COMPL, IMO_DSC_ENDER, IMO_DSC_NUMER, IMO_DSC_COMPL, BAI_SEQ, CID_SEQ, IMO_DSC_REGIA, IMO_DSC_ESTAD, IMO_DSC_CEP, IMO_FLT_PRECO, IMO_FLT_CONDO, IMO_FLT_IPTU, IMO_DSC_CODIG_OFERT, IMO_DT_LANCA, CAMINHO_ALTER, IMO_DSC_IMAGE_GRAND_1, IMO_DSC_IMAGE_GRAND_2, IMO_DSC_IMAGE_GRAND_3, IMO_DSC_IMAGE_GRAND_4, IMO_DSC_IMAGE_GRAND_5, IMO_DSC_IMAGE_GRAND_6, IMO_DSC_IMAGE_GRAND_7, IMO_DSC_IMAGE_GRAND_8) Values('364', 'Venda', 'Casa', NULL, '1', 'MARCAR ANTES', NULL, '30', NULL, NULL, NULL, NULL, NULL, '4', '3', '2', '3', '4', NULL, '1', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'CASA EM LOTE DE 1000M2 RECUADA , GRADEADA E COM JARDINS 01 PAVIMENTO \nVARANDÃO, SALÃO DE VISITAS COM PISO EM TABUA CORRIDA , TEM UMA LACUNA NO CENTRO\nSALA DE JANTAR ENORME COM PISO EM TABUA CORRIDA LAVABO HALL SOCIAL 04 QUARTOS GRANDES COM ARMARIOS EMBUTIDOS 01 SUITE COM CLOSET HIDROMASSAGEM BOX EM BLINDEX PISO EM MARMORE MARTA ROCHA HALL DE CIRCULAÇAO ROUPARIA LAVANDERIA ENORME COBERTA COZINHA BEM GRANDE COM BANCADA EM MARMORE ROSA NOS FUNDOS UM TELHADO COLONIAL COM COZINHA DA ROÇA FOGÃO A LENHA SAUNA CHURRASQUEIRA NA LATERAL ESQUERDA TEM UM ESPAÇO LINDO COMO UMA PRAÇA\nPONTO DE REFERENCIA:RESTAURANTE FARROUPILHA \n', 'SANTA ROSA', '825', NULL, '85', '1', 'SÃO FRANSCISCO', 'MG', NULL, '550000', NULL, '1800', 'I06269', '2007-12-16', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL); DELETE FROM IMOVEL WHERE ASS_SEQ = '364' AND IMO_DSC_CODIG_OFERT = 'I06331'; Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Dezembro 17, 2007 Ou seja, uma instrução por linha certo? Veja o código que fiz: <?php foreach(glob("pasta/*.sql") as $file) { // Lê todo o arquivo para um array $fp = file($file); // Faz uma iteração com todas as linhas do arquivo foreach($fp as $linha) { // Verifica se a instrução começa com DELETE ou DROP if( !preg_match("/^(DELETE|DROP)/", $linha) ) { // Caso a condição seja falsa, executa query mysql_query($linha); } } // Após a execução de todas as intruções, copia arquivo para diretório de executados copy($file, "executados/" . basename($file)); // Após a cópia, exclui arquivo unlink($file); } ?> Veja os comentário para ver se é isto que você quer fazer. PS. faça um backup antes hein! :rolleyes: []'s http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif Compartilhar este post Link para o post Compartilhar em outros sites
leo_davi 0 Denunciar post Postado Dezembro 17, 2007 ok, isso mesmo, vou testar e ja retorno a resposta. Compartilhar este post Link para o post Compartilhar em outros sites
leo_davi 0 Denunciar post Postado Dezembro 17, 2007 Muito, bom fucionou legal, agora é o seguinte se eu quiser que o arquivo leia *.sql e *.txt terei qu efazer o procedimento duas vezes né mas valeu Compartilhar este post Link para o post Compartilhar em outros sites
Paulo André 0 Denunciar post Postado Dezembro 17, 2007 Hummm... é, creio que sim... Ou, se nesta pasta só contenha arquivos .txt e .sql, nem precisa de especificar a extensão: foreach(glob("pasta/*") as $file) []'s Compartilhar este post Link para o post Compartilhar em outros sites
leo_davi 0 Denunciar post Postado Dezembro 17, 2007 Tudo certo aqui, valeu mesmo. Compartilhar este post Link para o post Compartilhar em outros sites