Pessoal,
Estou trabalhando em uma forma nova em utilizar arquivo txt em blocos.
Acontece que está indo tudo bem, mas não entendo porque está repetindo a instrução sql três vezes.
Alguém pode me ajudar?
Bloco de Citação
$file = $this->Ini->path_doc.’/’.[global_matricula]. ‘/’ . {file};
$linhas = count($file) - 1;
$total_linhas={tamaho};
$dividir= round($linhas/$total_linhas);
if (($linhas > $total_linhas) ) {
{pmensagem}= 'Arquivo com mais de '. $total_linhas.' registros. Favor gerar o mesmo relatório em '.$dividir.' partes !';
sc_error_exit();
}
$ativos = file_get_contents($file);
$blocos = explode("\n\r", $ativos);
$linha = [];
$users = array(“NSUSP”, “SUSP”);
$yul=’’;
$row=0;
$delete_table = ‘atualiza_dados’; // Table name
$delete_where = " contrato = ‘".[global_contrato]."’";
// Delete record
$delete_sql = 'DELETE FROM ’ . $delete_table
. ’ WHERE ’ . $delete_where;
sc_exec_sql($delete_sql);
foreach($blocos as $key_bloco => $bloco)
{
$linhas_do_bloco = array_values(array_filter(explode("\n", $bloco))); // remove linhas em branco e reordena keys
$linha[$key_bloco] = $linhas_do_bloco;
foreach($linhas_do_bloco as $key_linha => $linhas_do_bloco)
{
//realizando a validação do arquivo
if ($row >= 5 )
{
$t0 = explode(" ",$linha[$key_bloco][0]);
$t1 = explode(" ",$linha[$key_bloco][1]);
// $t2 = explode(" ",$linha[$key_bloco][2]);
if ( trim($linha[5][0]) != trim([global_caixa]))
{
sc_error_message('Caixa postal '.$linha[5][0].' diferente do contrato: '.[global_caixa].'<p>.Serviço Parado!<p> Favor, veja se o arquivo é o o correto, ou a caixa postal que você especificou<p> está errada ou o arquivo é de outro Contrato!');
unlink($file);
sc_error_exit();
}
$mesano=substr(trim($linha[5][1]),0,7);
if ( $mesano != {pmes})
{
sc_error_message('Mês/Ano: '.$mesano.' diferente do especificado: '.{pmes}.'<p>.Serviço Parado!<p> Favor, veja se o arquivo é o o correto, ou o mês que você especificou<p> está errado ou o arquivo é do mês diferente!');
unlink($file);
sc_error_exit();
}
if (in_array($t1[5], $users))
{
$unidade=$t1[3];
$rz = substr($unidade,0,2);
$lo = substr($unidade,2,4);
$rt = substr($unidade,6,2);
//echo "Bloco TESTE {$key_bloco} => Linha => {$key_linha} " . $linhas_do_bloco ."</br>";
}
if (in_array($t0[8], $users))
{
$instal=$t0[0];
$medidor= $t0[1];
$reg=$t0[3];
$dial=$t0[4];
$const=$t0[5];
$classe=$t0[6];
$tipo=$t0[7];
$endereco=$t1[0];
if ($yul <> $unidade){
$contar_conta=0;
$yul =$unidade;
}
$contar_conta=$contar_conta+1;
$co=str_pad($contar_conta, 5, "0", STR_PAD_LEFT);
$insert_table = 'atualiza_dados';
$insert_fields = array(
'instalacao' => "'$instal'",
'adm' => "'1'",
'reg' => "'$reg'",
'ul' => "'$yul'",
'razao' => "'$rz'",
'local' => "'$lo'",
'rota' => "'$rt'",
'seq' => "$co",
'endereco' => "'$endereco'",
'classe' => "'$classe'",
'medidor' => "'$medidor'",
'med_dif' => "'1'",
'sit' => "'$tipo'",
'ult_leitura' => "'2020-01-01'",
'diais' => "'$dial'",
'const' => "'$const'",
'ati' => "'01'",
'contrato' => "'4680005077'",
);
// Insert record
$insert_sql = 'INSERT INTO ' . $insert_table
. ' (' . implode(', ', array_keys($insert_fields)) . ')'
. ' VALUES (' . implode(', ', array_values($insert_fields)) . ')';
echo $insert_sql."</br>";
//sc_exec_sql($insert_sql);
}
IF (substr(trim($linha[$key_bloco][1]),0,7) == {pmes}) {
$unidade=$t1[3];
$rz = substr($unidade,0,2);
$lo = substr($unidade,2,4);
$rt = substr($unidade,6,2);
}
}
//echo "Bloco {$key_bloco} => Linha => {$key_linha} " . $linhas_do_bloco ."</br>";
}//FIM DO FOR EACH LINHA BLOCO
$row++;
}// FIM DO FOR EACH BLOCO
if (!unlink($file)) {
echo (“Erro ao deletar o arquivo $file”);
} else {
echo (“Arquivo $file deletado com sucesso!”);
}
Bloco de Citação
o dump sai desse jeito:
(pdo-mysql): DELETE FROM atualiza_dados WHERE contrato = ‘4680005077’
Bloco 0 => Linha => 0 CEMIG Distribuição S.A. 22/01/2020
Bloco 1 => Linha => 0 Pagina: 1 de 1.201
Bloco 2 => Linha => 0 Consistência Completa de Leitura
Bloco 4 => Linha => 0 Contrato: Mês/Ano: Unidade de Leitura Inicial: Unidade de Leitura Final: Unidade de Leitura Selecionada: Leiturista: Tipo de Leitura:
Bloco 5 => Linha => 0 014U
Bloco 5 => Linha => 1 01/2020 15000000 15999999 15020201 SFV OSB
Bloco 6 => Linha => 0 Instalação: Medidor: ML: Reg: D: Cte: Classe: F: Sit: C: OC: L.Min.: L.Máx.: L.Ant.: L.Exe.:
Bloco 6 => Linha => 1 Endereço: Mês/Ano Mês/Ano Mês/Ano Mês/Ano Mês/Ano Mês/Ano Observação
Bloco 6 => Linha => 2 Difer(%): Média: Cons.Apu.: Consumo: Consumo: Consumo: Consumo: Consumo: Consumo: Motivo
INSERT INTO atualiza_dados (instalacao, adm, reg, ul, razao, local, rota, seq, endereco, classe, medidor, med_dif, sit, ult_leitura, diais, const, ati, contrato) VALUES (‘3005469507’, ‘1’, ‘03’, ‘15020201’, ‘15’, ‘0202’, ‘01’, 00001, ‘AVSANTOSDUMONT,850–CS’, ‘Resi’, ‘ABA993042726’, ‘1’, ‘1’, ‘2020-01-01’, ‘5’, ‘001’, ‘01’, ‘4680005077’)
Bloco 7 => Linha => 0 3005469507 ABA993042726 01 03 5 001 Resi 1 NSUSP 29598 29810 29374
INSERT INTO atualiza_dados (instalacao, adm, reg, ul, razao, local, rota, seq, endereco, classe, medidor, med_dif, sit, ult_leitura, diais, const, ati, contrato) VALUES (‘3005469507’, ‘1’, ‘03’, ‘15020201’, ‘15’, ‘0202’, ‘01’, 00002, ‘AVSANTOSDUMONT,850–CS’, ‘Resi’, ‘ABA993042726’, ‘1’, ‘1’, ‘2020-01-01’, ‘5’, ‘001’, ‘01’, ‘4680005077’)
Bloco 7 => Linha => 1 AVSANTOSDUMONT,850–CS 12/19 11/19 10/19 09/19 08/19 07/19
INSERT INTO atualiza_dados (instalacao, adm, reg, ul, razao, local, rota, seq, endereco, classe, medidor, med_dif, sit, ult_leitura, diais, const, ati, contrato) VALUES (‘3005469507’, ‘1’, ‘03’, ‘15020201’, ‘15’, ‘0202’, ‘01’, 00003, ‘AVSANTOSDUMONT,850–CS’, ‘Resi’, ‘ABA993042726’, ‘1’, ‘1’, ‘2020-01-01’, ‘5’, ‘001’, ‘01’, ‘4680005077’)
Bloco 7 => Linha => 2 0,00% 328 0 297 366 320 379 296 286 Leitura não Executada
INSERT INTO atualiza_dados (instalacao, adm, reg, ul, razao, local, rota, seq, endereco, classe, medidor, med_dif, sit, ult_leitura, diais, const, ati, contrato) VALUES (‘3014177017’, ‘1’, ‘03’, ‘15020201’, ‘15’, ‘0202’, ‘01’, 00004, ‘AEROPORTO,9999–CS’, ‘Resi’, ‘AMJ198004378’, ‘1’, ‘1’, ‘2020-01-01’, ‘5’, ‘001’, ‘01’, ‘4680005077’)
Bloco 8 => Linha => 0 3014177017 AMJ198004378 01 03 5 001 Resi 1 NSUSP 00000 00000 00000
INSERT INTO atualiza_dados (instalacao, adm, reg, ul, razao, local, rota, seq, endereco, classe, medidor, med_dif, sit, ult_leitura, diais, const, ati, contrato) VALUES (‘3014177017’, ‘1’, ‘03’, ‘15020201’, ‘15’, ‘0202’, ‘01’, 00005, ‘AEROPORTO,9999–CS’, ‘Resi’, ‘AMJ198004378’, ‘1’, ‘1’, ‘2020-01-01’, ‘5’, ‘001’, ‘01’, ‘4680005077’)
Bloco 8 => Linha => 1 AEROPORTO,9999–CS 12/19 11/19 10/19 09/19 08/19 07/19
INSERT INTO atualiza_dados (instalacao, adm, reg, ul, razao, local, rota, seq, endereco, classe, medidor, med_dif, sit, ult_leitura, diais, const, ati, contrato) VALUES (‘3014177017’, ‘1’, ‘03’, ‘15020201’, ‘15’, ‘0202’, ‘01’, 00006, ‘AEROPORTO,9999–CS’, ‘Resi’, ‘AMJ198004378’, ‘1’, ‘1’, ‘2020-01-01’, ‘5’, ‘001’, ‘01’, ‘4680005077’)
Bloco 8 => Linha => 2 0,00% 0 0 0 0 0 0 0 0 Leitura não Executada
Veja são três instruções sql.
Alguém poderia me ajudar?