Criando Importador CSV com POO [RESOLVIDO]

1. Criando Importador CSV com POO [RESOLVIDO]

Willians
icefusion

(usa Debian)

Enviado em 20/05/2009 - 09:58h

Olá galera....estou criando um importador para importar 20 arquivos csv para 20 tabelas....porém estou usando uma coisa nova em meu cotidiano que é a POO para não ter q fazer 20 vezes a mesma rotina.
Porém estou meio enroscado...

tenho estes 3 arquivos de classes que estou implementando...

http://pastebin.com/m65fbfce ->ManipularCSV
http://pastebin.com/m2f0786e2 ->RemoverSimbolo
http://pastebin.com/md269f6d -> Importar Tabela


Minha idéia foi a seguinte, primeiro criei uma classe de conexão com o bd (no caso to usando firebird q eh um bd ja existente, soh vou acrescentar estes dados). Após isso parti para a parte de manipulação do csv, dentro do arquivo criei um método de abrir o arquivo, fechar o arquivo, obter o nome do arquivo ( q vai ser usado para sabermos o nome da tabela, ja que o arquivo csv e a tabela terão os mesmos nomes), um método para obter o número total de campos desta tabela.

A minha idéia com isso era fornecer o nome da tabela e o numero de campos para tentar fazer a imporação, porém eu ainda tenho q saber o nome dos campos da tabela, que podem até ser obtidos pela primeira linha do arquivo csv, e depois disso, naum sei como montar essa inserção!!!

alguem pode me dar uma força???


  


2. Re: Criando Importador CSV com POO [RESOLVIDO]

Willians
icefusion

(usa Debian)

Enviado em 29/06/2009 - 09:30h

<?php
include_once 'RemoverSimbolos.class.php';
include_once 'ManipularString.class.php';
include_once 'Conexao.class.php';

class ManipularArquivoCsv {
private $handle;
private $remSimb;
private $limparStr;
private $separador;
private $conectar;
private $cabecalho;
private $menu;
private $rodape;
private $teste;

function __construct(){
$this->remSimb = new RemoverSimbolos();
$this->limparStr = new ManipularString();
$this->separador = ";";
$this->conectar = new Conexao('192.168.1.252','/smb_arquivos/gasoil/Flexis/bases/tabelas.gdb', 'SYSDBA', 'masterkey','IB');
$this->cabecalho = 'montador/cabecalho.php';
$this->rodape = 'montador/rodape.php';
$this->menu = 'montador/menu.php';
$this->teste = false;
}

private function abrir($caminho){
if(file_exists($caminho)){
$this->handle = fopen($caminho, "r");
return $this->handle;
}else {
include_once($this->cabecalho);
echo "<div id=\"principal\"> \n";
echo "<table id=\"importar\">\n";
echo "<tr>\n<th class=\"titulo\" colspan=\"2\">Abrir Arquivo - Resposta</th>\n</tr>\n";
echo "<tr>\n<td>Arquivo Não Existe ou Caminho Inválido!</td>\n</tr>\n";
echo "</table>\n";
echo "</div>\n";
include_once($this->menu);
include_once($this->rodape);

}
}

private function fechar(){
fclose($this->handle);
}

private function numCampos($caminho){
$hand = $this->abrir($caminho);
while($data = fgetcsv ($hand, 1000, ";")){
$matrizDeDados[] = $data;
break;
}
foreach ($matrizDeDados as $linhas){
$cont = count($linhas);
}
$this->fechar();
return $cont;
}

private function nomCampos($caminho, $ncampos){
$hand = $this->abrir($caminho);
while($data = fgetcsv ($hand, 1000, ";")){
$matrizDeDados[] = $data;
foreach ($matrizDeDados as $linhas){
for ($i=1; $i<=$ncampos; $i++){
$vet[$i]=$linhas[$i-1];
}
}
break;
}
$this->fechar();
return $vet;
}

public function getNome($local){
include_once($this->cabecalho);
echo "<div id=\"principal\"> \n";
echo "<table id=\"importar\">\n";
echo "<tr>\n<th class=\"titulo\" colspan=\"2\">Resultados: Importar Arquivo CSV</th>\n</tr>\n";
foreach (glob($local) as $filename){
$nomeArq = $this->remSimb->RemoveBar($filename);
$nomeArq = $this->remSimb->RemovePonto($nomeArq);
$ncampo = $this->numCampos($filename);
$nomCampo = $this->nomCampos($filename,$ncampo);
$tamanhoArq = filesize($filename);
$this->importar($tamanhoArq, $this->separador, $ncampo, $nomCampo, $filename, $nomeArq);
}
echo "<tr>\n<td>Operação Completa!!</td>\n</tr>\n";
echo "<tr>\n<td>&nbsp;</td>\n</tr>\n";
echo "</table>\n";
echo "</div>\n";
include_once($this->menu);
include_once($this->rodape);
}


private function importar($tamArq, $separador, $numCampos, $nomCampos, $arquivo, $tabela){
$tabela = strtoupper($tabela);
$sql = "INSERT INTO ";
$sql .= $tabela . " (";
foreach ($nomCampos as $c){
$c = $this->remSimb->RemoverPontos($c);
$c = $tabela.".".$c;
$sql .= str_replace(' ','',$c).",";
$sql = $this->limparStr->tirarCaracterEsp($sql);
$sql = strtoupper($sql);
}
$sql = substr($sql, 0, strlen($sql) -1);
$sql .= " ) VALUES (";
$hand = fopen($arquivo, 'r');
$pular = fgetcsv($hand, $tamArq, $this->separador);
$sqlIni = $sql;
while(($linha = fgetcsv($hand, $tamArq, $this->separador)) != false){
$sql = $sqlIni;
foreach ($linha as $valor){
$valor = $this->remSimb->RemoveAspas($valor);
$valor = strtoupper($valor);
$sql .= "'".$valor."',";
}
$sql = substr($sql,0,strlen($sql)-1);
$sql .= ")";
$conexao = $this->conectar->conectar();
if (!ibase_query($sql)) {
echo "<tr>\n<td> Erro: ".ibase_errmsg()."</td>\n</tr>\n";
echo "<tr>\n<td> Arquivo: ".$arquivo." Tabela: ".$tabela."</td>\n</tr>\n";
echo "<tr>\n<td>&nbsp;</td>\n</tr>\n";
echo "<tr>\n<td> SQL com Erro: ".$sql . "</td>\n</tr>\n";
}else {
$this->teste = true;
}
}
if ($this->teste == true){
echo "<tr>\n<td>Importação Arquivo ".$arquivo."</td>\n</tr>\n";
echo "<tr>\n<td>para Tabela ".$tabela." Concluído com Sussesso!</td>\n</tr>\n";
echo "<tr>\n<td>&nbsp;</td>\n</tr>\n";
}else{
echo "<tr>\n<td>Importação Arquivo ".$arquivo."</td>\n</tr>\n";
echo "<tr>\n<td>para Tabela ".$tabela." Não Concluído</td>\n</tr>\n";
echo "<tr>\n<td>&nbsp;</td>\n</tr>\n";
}
$this->conectar->desconectar($conexao);
}
}
?>








Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts