· 10 years ago · Jul 13, 2016, 03:27 PM
1<?php
2/*
3* Xandão de Baker Street Ninja Importer
4* By Moglia 12/07/2016
5* Exec: php -q import.php
6*/
7set_time_limit(0);
8ini_set('memory_limit', '128M');
9if (PHP_SAPI !== 'cli') { die ('Access denied'); }
10chdir(dirname(__FILE__));
11
12$HOST_DB = "";
13$PORT_DB = "";
14$DB_NAME = "";
15$DB_USER = "";
16$DB_PASS = "";
17
18$diretorio = "import/";
19$diretorio_processados = "imported/";
20$delimitador = '@';
21$arquivos = scandir($diretorio);
22
23foreach($arquivos as $arquivo)
24{
25 if(is_file($diretorio.$arquivo))
26 {
27 ini_set('auto_detect_line_endings',TRUE);
28
29 $tabela = normaliza_nome($arquivo);
30
31 $arqabr = fopen($diretorio.$arquivo,'r');
32 $i=0;
33 while (($dados = fgets($arqabr, 8192)) !== false)
34 {
35 $dados = explode($delimitador, $dados);
36 if($i == 0) //Campos Para as Tabelas
37 {
38 $instrucao_insert = "INSERT INTO `$tabela` (";
39 $campos_tabela_sql = "";
40 $qdtcampos = sizeof($dados) - 1;
41 for($j=0;$j<=$qdtcampos;$j++)
42 {
43 $nome_campo = $dados[$j];
44 $nome_campo = normaliza_nome($nome_campo);
45 $campos_tabela[]=$nome_campo;
46 if($j == $qdtcampos)
47 {
48 $instrucao_insert .= "`$nome_campo`";
49 $campos_tabela_sql .= "`$nome_campo` TEXT\n";
50 }
51 else
52 {
53 $instrucao_insert .= "`$nome_campo`,";
54 $campos_tabela_sql .= "`$nome_campo` TEXT,\n";
55 }
56 }
57 $instrucao_insert .= ") VALUES ( ";
58
59 $tabela_sql = "--\n";
60 $tabela_sql .= "-- Estrutura da tabela `$tabela`\n";
61 $tabela_sql .= "--\n\n";
62 $tabela_sql .= "SET sql_notes = 0;";
63 $tabela_sql .= "CREATE TABLE IF NOT EXISTS `$tabela` (\n";
64 $tabela_sql .= $campos_tabela_sql;
65 $tabela_sql .= ");\n\n";
66 $tabela_sql .= "SET sql_notes = 1;";
67
68 try
69 {
70 $dbh = new PDO("mysql:host=$HOST_DB;port=$PORT_DB;dbname=$DB_NAME", "$DB_USER", "$DB_PASS", array( PDO::ATTR_PERSISTENT => false));
71 $dbh->exec($tabela_sql);
72 }
73 catch (PDOException $e)
74 {
75 print "Erro ao criar a tabela: " . $e->getMessage() . "<br/>";
76 }
77
78 $inicio_dados = "--\n";
79 $inicio_dados .= "-- Extraindo dados da tabela `$tabela`\n";
80 $inicio_dados .= "--\n\n";
81 //echo $inicio_dados;
82
83 }
84 else //Registros
85 {
86 $insert_atual = $instrucao_insert;
87 $qdtvalores = sizeof($dados) - 1;
88 for($j=0;$j<=$qdtvalores;$j++)
89 {
90 $valor_campo = $dados[$j];
91 $valor_campo = trim($valor_campo);
92 if($j == $qdtvalores)
93 {
94 $insert_atual .= "'$valor_campo'";
95 }
96 else
97 {
98 $insert_atual .= "'$valor_campo',";
99 }
100 }
101 $insert_atual .= ");\n";
102 //echo $insert_atual;
103 try
104 {
105 $dbh = new PDO("mysql:host=$HOST_DB;port=$PORT_DB;dbname=$DB_NAME", "$DB_USER", "$DB_PASS", array( PDO::ATTR_PERSISTENT => false));
106 $dbh->exec($insert_atual);
107 }
108 catch (PDOException $e)
109 {
110 print "Erro ao inserir registro: " . $e->getMessage() . "\n";
111 echo "SQL: $insert_atual\n";
112 }
113
114 }
115
116 /*if($i == 1) //Limitando em duas linhas para teste
117 {
118 break;
119 } */
120
121 $i++;
122 }
123
124 ini_set('auto_detect_line_endings',FALSE);
125 }
126
127 //rename("$diretorio.$arquivo", "$diretorio_processados.$arquivo"); Movendo arquivo já processado
128}
129
130function normaliza_nome($nome)
131{
132 $nome = strtolower(trim($nome));
133 $nome = preg_replace("/[^A-Za-z0-9 ]/", '', $nome);
134 $nome = str_replace(' ','_',$nome);
135 return $nome;
136}
137?>