Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

leo_davi

[Resolvido] Ler arquivos txt sw um diretorio e executar SQL

Recommended Posts

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

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

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

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

×

Informação importante

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