Commit 8e0a5de3c20368b67435793fee4faf174f380469
1 parent
055d3a67
Exists in
master
and in
7 other branches
Inclusão de opção para upload completo de um arquivo csv e criação de tabela no …
…postgresql (sistema metaestat)
Showing
5 changed files
with
183 additions
and
164 deletions
Show diff stats
admin/admin.db
No preview for this file type
admin/html/estat_editor.html
@@ -5,10 +5,10 @@ | @@ -5,10 +5,10 @@ | ||
5 | <title>Conexao com banco de dados</title> | 5 | <title>Conexao com banco de dados</title> |
6 | <style type="text/css"> | 6 | <style type="text/css"> |
7 | /*margin and padding on body element | 7 | /*margin and padding on body element |
8 | - can introduce errors in determining | ||
9 | - element position and are not recommended; | ||
10 | - we turn them off as a foundation for YUI | ||
11 | - CSS treatments. */ | 8 | + can introduce errors in determining |
9 | + element position and are not recommended; | ||
10 | + we turn them off as a foundation for YUI | ||
11 | + CSS treatments. */ | ||
12 | body { | 12 | body { |
13 | margin: 0; | 13 | margin: 0; |
14 | padding: 0; | 14 | padding: 0; |
@@ -38,8 +38,8 @@ body { | @@ -38,8 +38,8 @@ body { | ||
38 | </div> | 38 | </div> |
39 | <div class="ft"></div> | 39 | <div class="ft"></div> |
40 | </div> | 40 | </div> |
41 | - <p> | ||
42 | - Atenção: para poder editar o banco de dados, o usuário da conexão escolhida deve ter direitos de edição<br> | 41 | + <p style="font-size:10px;"> |
42 | + Atenção: para poder editar o banco de dados, o usuário da conexão escolhida deve ter direitos de edição. | ||
43 | Apenas as tabelas e os dados existentes no esquema i3geo_metaestat podem ser editados</p> | 43 | Apenas as tabelas e os dados existentes no esquema i3geo_metaestat podem ser editados</p> |
44 | <div id="i3GEOadminEditorConexao" style="left: -5px;"></div><br> | 44 | <div id="i3GEOadminEditorConexao" style="left: -5px;"></div><br> |
45 | <div id="i3GEOadminEditorEsquema" style="left: -5px;"></div> | 45 | <div id="i3GEOadminEditorEsquema" style="left: -5px;"></div> |
@@ -52,33 +52,33 @@ body { | @@ -52,33 +52,33 @@ body { | ||
52 | <div id=logajax style="display: block"></div> | 52 | <div id=logajax style="display: block"></div> |
53 | <script> | 53 | <script> |
54 | /* | 54 | /* |
55 | - Title: Editor de tabelas do sistema de metadados estatísticos | 55 | + Title: Editor de tabelas do sistema de metadados estatísticos |
56 | 56 | ||
57 | - Licenca: | 57 | + Licenca: |
58 | 58 | ||
59 | - GPL2 | 59 | + GPL2 |
60 | 60 | ||
61 | - i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | 61 | + i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet |
62 | 62 | ||
63 | - Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | ||
64 | - Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br | 63 | + Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil |
64 | + Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br | ||
65 | 65 | ||
66 | - Este programa é software livre; você pode redistribuí-lo | ||
67 | - e/ou modificá-lo sob os termos da Licença Pública Geral | ||
68 | - GNU conforme publicada pela Free Software Foundation; | 66 | + Este programa é software livre; você pode redistribuí-lo |
67 | + e/ou modificá-lo sob os termos da Licença Pública Geral | ||
68 | + GNU conforme publicada pela Free Software Foundation; | ||
69 | 69 | ||
70 | - Este programa é distribuído na expectativa de que seja útil, | ||
71 | - porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | ||
72 | - de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | ||
73 | - Consulte a Licença Pública Geral do GNU para mais detalhes. | ||
74 | - Você deve ter recebido uma cópia da Licença Pública Geral do | ||
75 | - GNU junto com este programa; se não, escreva para a | ||
76 | - Free Software Foundation, Inc., no endereço | ||
77 | - 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | 70 | + Este programa é distribuído na expectativa de que seja útil, |
71 | + porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | ||
72 | + de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | ||
73 | + Consulte a Licença Pública Geral do GNU para mais detalhes. | ||
74 | + Você deve ter recebido uma cópia da Licença Pública Geral do | ||
75 | + GNU junto com este programa; se não, escreva para a | ||
76 | + Free Software Foundation, Inc., no endereço | ||
77 | + 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
78 | 78 | ||
79 | - Arquivo: | 79 | + Arquivo: |
80 | 80 | ||
81 | - i3geo/admin/html/estat_editor.html | 81 | + i3geo/admin/html/estat_editor.html |
82 | */ | 82 | */ |
83 | 83 | ||
84 | //necessario para a ferramenta login e outras | 84 | //necessario para a ferramenta login e outras |
admin/html/estat_variavel.html
@@ -5,10 +5,10 @@ | @@ -5,10 +5,10 @@ | ||
5 | <title>Variaveis</title> | 5 | <title>Variaveis</title> |
6 | <style type="text/css"> | 6 | <style type="text/css"> |
7 | /*margin and padding on body element | 7 | /*margin and padding on body element |
8 | - can introduce errors in determining | ||
9 | - element position and are not recommended; | ||
10 | - we turn them off as a foundation for YUI | ||
11 | - CSS treatments. */ | 8 | + can introduce errors in determining |
9 | + element position and are not recommended; | ||
10 | + we turn them off as a foundation for YUI | ||
11 | + CSS treatments. */ | ||
12 | body { | 12 | body { |
13 | margin: 0; | 13 | margin: 0; |
14 | padding: 0; | 14 | padding: 0; |
@@ -59,6 +59,7 @@ body { | @@ -59,6 +59,7 @@ body { | ||
59 | <input onclick="relatorioCompleto()" type=button id=estatVariavelrelatorioCompleto | 59 | <input onclick="relatorioCompleto()" type=button id=estatVariavelrelatorioCompleto |
60 | value="Relatório" /> | 60 | value="Relatório" /> |
61 | <br> | 61 | <br> |
62 | + <p style="font-size:10px;">Observação: caso algum mapa esteja aberto (em outra aba por exemplo) não se esqueça de recarregar o navegador após alterar alguma classificação. Isso é necessário para que o mapa reflita as alterações feitas, anulando eventuais arquivos em cache.</p> | ||
62 | <p>Variáveis cadastradas:</p> | 63 | <p>Variáveis cadastradas:</p> |
63 | <div id="estatVariavelArvore" style="left: -5px;"></div> | 64 | <div id="estatVariavelArvore" style="left: -5px;"></div> |
64 | <div id=logajax style="display: block"></div> | 65 | <div id=logajax style="display: block"></div> |
@@ -67,39 +68,39 @@ body { | @@ -67,39 +68,39 @@ body { | ||
67 | </center> | 68 | </center> |
68 | <script> | 69 | <script> |
69 | /* | 70 | /* |
70 | - Title: Cadatro de variáveis estatísticas | 71 | + Title: Cadatro de variáveis estatísticas |
71 | 72 | ||
72 | - Veja também: | 73 | + Veja também: |
73 | 74 | ||
74 | - <core.js> | 75 | + <core.js> |
75 | 76 | ||
76 | - <estat_variaveis.js> | 77 | + <estat_variaveis.js> |
77 | 78 | ||
78 | - Licenca: | 79 | + Licenca: |
79 | 80 | ||
80 | - GPL2 | 81 | + GPL2 |
81 | 82 | ||
82 | - i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet | 83 | + i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet |
83 | 84 | ||
84 | - Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil | ||
85 | - Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br | 85 | + Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil |
86 | + Desenvolvedor: Edmar Moretti edmar.moretti@mma.gov.br | ||
86 | 87 | ||
87 | - Este programa é software livre; você pode redistribuí-lo | ||
88 | - e/ou modificá-lo sob os termos da Licença Pública Geral | ||
89 | - GNU conforme publicada pela Free Software Foundation; | 88 | + Este programa é software livre; você pode redistribuí-lo |
89 | + e/ou modificá-lo sob os termos da Licença Pública Geral | ||
90 | + GNU conforme publicada pela Free Software Foundation; | ||
90 | 91 | ||
91 | - Este programa é distribuído na expectativa de que seja útil, | ||
92 | - porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | ||
93 | - de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | ||
94 | - Consulte a Licença Pública Geral do GNU para mais detalhes. | ||
95 | - Você deve ter recebido uma cópia da Licença Pública Geral do | ||
96 | - GNU junto com este programa; se não, escreva para a | ||
97 | - Free Software Foundation, Inc., no endereço | ||
98 | - 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | 92 | + Este programa é distribuído na expectativa de que seja útil, |
93 | + porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita | ||
94 | + de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA. | ||
95 | + Consulte a Licença Pública Geral do GNU para mais detalhes. | ||
96 | + Você deve ter recebido uma cópia da Licença Pública Geral do | ||
97 | + GNU junto com este programa; se não, escreva para a | ||
98 | + Free Software Foundation, Inc., no endereço | ||
99 | + 59 Temple Street, Suite 330, Boston, MA 02111-1307 USA. | ||
99 | 100 | ||
100 | - Arquivo: | 101 | + Arquivo: |
101 | 102 | ||
102 | - i3geo/admin/html/estat_variaveis.html | 103 | + i3geo/admin/html/estat_variaveis.html |
103 | */ | 104 | */ |
104 | 105 | ||
105 | //necessario para a ferramenta login e outras | 106 | //necessario para a ferramenta login e outras |
admin/js/estat_editor.js
@@ -424,6 +424,7 @@ i3GEOadmin.editor = { | @@ -424,6 +424,7 @@ i3GEOadmin.editor = { | ||
424 | }, | 424 | }, |
425 | uploadshp: { | 425 | uploadshp: { |
426 | inicia: function(){ | 426 | inicia: function(){ |
427 | + i3GEOadmin.editor.esvaziaFormsUpload(); | ||
427 | var onde = $i("i3GEOadmin_formupload"); | 428 | var onde = $i("i3GEOadmin_formupload"); |
428 | if(onde.innerHTML != ""){ | 429 | if(onde.innerHTML != ""){ |
429 | onde.innerHTML = ""; | 430 | onde.innerHTML = ""; |
@@ -471,12 +472,13 @@ i3GEOadmin.editor = { | @@ -471,12 +472,13 @@ i3GEOadmin.editor = { | ||
471 | }, | 472 | }, |
472 | uploadcsv: { | 473 | uploadcsv: { |
473 | inicia: function(){ | 474 | inicia: function(){ |
475 | + i3GEOadmin.editor.esvaziaFormsUpload(); | ||
474 | var onde = $i("i3GEOadmin_formuploadcsv"); | 476 | var onde = $i("i3GEOadmin_formuploadcsv"); |
475 | if(onde.innerHTML != ""){ | 477 | if(onde.innerHTML != ""){ |
476 | onde.innerHTML = ""; | 478 | onde.innerHTML = ""; |
477 | return; | 479 | return; |
478 | } | 480 | } |
479 | - $i("i3GEOadmin_formupload").innerHTML = i3GEOadmin.editor.uploadcsv.formulario(); | 481 | + $i("i3GEOadmin_formuploadcsv").innerHTML = i3GEOadmin.editor.uploadcsv.formulario(); |
480 | new YAHOO.widget.Button( | 482 | new YAHOO.widget.Button( |
481 | "i3GEOuploadcsvsubmit", | 483 | "i3GEOuploadcsvsubmit", |
482 | {onclick:{fn: i3GEOadmin.editor.uploadcsv.submit}} | 484 | {onclick:{fn: i3GEOadmin.editor.uploadcsv.submit}} |
@@ -506,6 +508,15 @@ i3GEOadmin.editor = { | @@ -506,6 +508,15 @@ i3GEOadmin.editor = { | ||
506 | $i("i3GEOuploadcsvesquema").value = $i("i3GEOadminesquema").value; | 508 | $i("i3GEOuploadcsvesquema").value = $i("i3GEOadminesquema").value; |
507 | $i("i3GEOuploadcsvf").submit(); | 509 | $i("i3GEOuploadcsvf").submit(); |
508 | } | 510 | } |
511 | + }, | ||
512 | + esvaziaFormsUpload: function(){ | ||
513 | + var csv = $i("i3GEOadmin_formuploadcsv"), | ||
514 | + shp = $i("i3GEOadmin_formupload") | ||
515 | + if(csv){ | ||
516 | + csv.innerHTML = ""; | ||
517 | + } | ||
518 | + if(shp){ | ||
519 | + shp.innerHTML = ""; | ||
520 | + } | ||
509 | } | 521 | } |
510 | - | ||
511 | }; | 522 | }; |
admin/php/metaestat_uploadcsv_submit.php
1 | <?php | 1 | <?php |
2 | /* | 2 | /* |
3 | * Faz o upload de csv e insere no banco de dados criando uma nova tabela | 3 | * Faz o upload de csv e insere no banco de dados criando uma nova tabela |
4 | - */ | 4 | +*/ |
5 | include_once("admin.php"); | 5 | include_once("admin.php"); |
6 | include_once("login.php"); | 6 | include_once("login.php"); |
7 | if(verificaOperacaoSessao("admin/metaestat/editorbanco") == false){ | 7 | if(verificaOperacaoSessao("admin/metaestat/editorbanco") == false){ |
@@ -16,122 +16,128 @@ error_reporting(0); | @@ -16,122 +16,128 @@ error_reporting(0); | ||
16 | <link rel="stylesheet" type="text/css" href="../../css/geral.css" /> | 16 | <link rel="stylesheet" type="text/css" href="../../css/geral.css" /> |
17 | <title></title> | 17 | <title></title> |
18 | </head> | 18 | </head> |
19 | -<body bgcolor="white" style="background-color:white;text-align:left;"> | ||
20 | -<p> | ||
21 | -<?php | ||
22 | -if($_POST["tabelaDestino"] == ""){ | ||
23 | - echo "Nome da tabela não definido"; | ||
24 | - exit; | ||
25 | -} | ||
26 | -if ($_FILES['i3GEOuploadcsv']['name'] == ""){ | ||
27 | - echo "Arquivo não definido"; | ||
28 | - exit; | ||
29 | -} | ||
30 | -if (isset($_FILES['i3GEOuploadcsv']['name'])){ | ||
31 | - require_once ("../../ms_configura.php"); | ||
32 | - echo "<p class='paragrafo' >Carregando o arquivo...</p>"; | ||
33 | - $arqcsv = $_FILES['i3GEOuploadcsv']['tmp_name']; | ||
34 | - $nomePrefixo = str_replace(" ","_",removeAcentos($_FILES['i3GEOuploadcsv']['name'])); | ||
35 | - $nomePrefixo = $nomePrefixo."_".(nomeRandomico(4)); | ||
36 | - | ||
37 | - $Arquivo = $_FILES['i3GEOuploadcsv']['tmp_name']; | ||
38 | - $status = move_uploaded_file($Arquivo,$dir_tmp."/".$nomePrefixo); | ||
39 | - if($status != 1) | ||
40 | - {echo "<p class='paragrafo' >Ocorreu um erro no envio do arquivo";exit;} | ||
41 | - | 19 | +<body bgcolor="white" style="background-color: white; text-align: left;"> |
20 | + <p> | ||
21 | + <?php | ||
22 | + if($_POST["tabelaDestinocsv"] == ""){ | ||
23 | + echo "Nome da tabela não definido"; | ||
24 | + exit; | ||
25 | + } | ||
26 | + if ($_FILES['i3GEOuploadcsv']['name'] == ""){ | ||
27 | + echo "Arquivo não definido"; | ||
28 | + exit; | ||
29 | + } | ||
30 | + if (isset($_FILES['i3GEOuploadcsv']['name'])){ | ||
31 | + require_once ("../../ms_configura.php"); | ||
32 | + echo "<p class='paragrafo' >Carregando o arquivo...</p>"; | ||
33 | + $arqcsv = $_FILES['i3GEOuploadcsv']['tmp_name']; | ||
34 | + $nomePrefixo = str_replace(" ","_",removeAcentos($_FILES['i3GEOuploadcsv']['name'])); | ||
35 | + $nomePrefixo = $nomePrefixo."_".(nomeRandomico(4)); | ||
42 | 36 | ||
43 | - if(!file_exists($dir_tmp."/".$nomePrefixo)) | ||
44 | - {echo "<p class='paragrafo' >Ocorreu algum problema no envio do arquivo ".$dir_tmp."/".$nomePrefixo;paraAguarde();exit;} | ||
45 | - $arqcsv = $dir_tmp."/".$nomePrefixo; | 37 | + $Arquivo = $_FILES['i3GEOuploadcsv']['tmp_name']; |
38 | + $status = move_uploaded_file($Arquivo,$dir_tmp."/".$nomePrefixo); | ||
39 | + if($status != 1){ | ||
40 | + echo "<p class='paragrafo' >Ocorreu um erro no envio do arquivo";exit; | ||
41 | + } | ||
42 | + if(!file_exists($dir_tmp."/".$nomePrefixo)){ | ||
43 | + echo "<p class='paragrafo' >Ocorreu algum problema no envio do arquivo ".$dir_tmp."/".$nomePrefixo;paraAguarde();exit; | ||
44 | + } | ||
45 | + $arqcsv = $dir_tmp."/".$nomePrefixo; | ||
46 | + //pega os parametros de conexao | ||
47 | + include("classe_metaestat.php"); | ||
48 | + $m = new Metaestat(); | ||
49 | + $conexao = $m->listaConexao($_POST["i3GEOuploadcsvcodigoconexao"],true); | ||
50 | + //pega a lista de colunas e identifica o separador utilizado | ||
51 | + $handle = fopen ($arqcsv, "r"); | ||
52 | + $cabecalho = fgets($handle); | ||
53 | + $buffer = str_replace('"','',$cabecalho); | ||
54 | + $buffer = str_replace("'",'',$buffer); | ||
55 | + $buffer = str_replace("\n",'',$buffer); | ||
56 | + $buffer = str_replace("\r",'',$buffer); | ||
57 | + $colunas = explode(";",$buffer); | ||
58 | + $separador = ";"; | ||
59 | + if(count($colunas) == 1){ | ||
60 | + $colunas = explode(",",$buffer); | ||
61 | + $separador = ","; | ||
62 | + } | ||
63 | + //var_dump($colunas); | ||
64 | + fclose ($handle); | ||
65 | + //le o csv em um array | ||
66 | + $handle = fopen ($arqcsv, "r"); | ||
67 | + $linhas = array(); | ||
46 | 68 | ||
47 | - //pega os parametros de conexao | ||
48 | - include("classe_metaestat.php"); | ||
49 | - $m = new Metaestat(); | ||
50 | - $conexao = $m->listaConexao($_POST["i3GEOuploadcodigoconexao"],true); | ||
51 | - //pega a lista de colunas e identifica o separador utilizado | ||
52 | - $handle = fopen ($arqcsv, "r"); | ||
53 | - $cabecalho = fgets($handle); | ||
54 | - $buffer = str_replace('"','',$cabecalho); | ||
55 | - $buffer = str_replace("'",'',$buffer); | ||
56 | - $buffer = str_replace("\n",'',$buffer); | ||
57 | - $buffer = str_replace("\r",'',$buffer); | ||
58 | - $colunas = explode(";",$buffer); | ||
59 | - $separador = ";"; | ||
60 | - if(count($colunas) == 1){ | ||
61 | - $colunas = explode(",",$buffer); | ||
62 | - $separador = ","; | ||
63 | - } | ||
64 | - //var_dump($colunas); | ||
65 | - $colunas = implode(",",$colunas); | ||
66 | - fclose ($handle); | ||
67 | - | ||
68 | - | ||
69 | - //le o csv em um array | ||
70 | - $handle = fopen ($arqcsv, "r"); | ||
71 | - $linhas = array(); | ||
72 | - while (!feof($handle)) { | ||
73 | - $buffer = fgets($handle); | ||
74 | - if($buffer != $cabecalho){ | ||
75 | - $buffer = str_replace('"','',$buffer); | ||
76 | - $buffer = str_replace("'",'',$buffer); | ||
77 | - $buffer = str_replace("\n",'',$buffer); | ||
78 | - $buffer = str_replace("\r",'',$buffer); | ||
79 | - $linhas[] = explode($separador,$buffer); | 69 | + $ncolunas = count($colunas); |
70 | + while (!feof($handle)) { | ||
71 | + $buffer = fgets($handle); | ||
72 | + if($buffer != $cabecalho){ | ||
73 | + $buffer = str_replace('"','',$buffer); | ||
74 | + $buffer = str_replace("'",'',$buffer); | ||
75 | + $buffer = str_replace("\n",'',$buffer); | ||
76 | + $buffer = str_replace("\r",'',$buffer); | ||
77 | + $temp = explode($separador,$buffer); | ||
78 | + if(count($temp) == $ncolunas) | ||
79 | + $linhas[] = $temp; | ||
80 | + } | ||
80 | } | 81 | } |
81 | - } | ||
82 | - fclose ($handle); | ||
83 | - //decobre o tipo de coluna | ||
84 | - $ncolunas = count($colunas); | ||
85 | - for ($j=0; $j<$ncolunas;$j++){ | ||
86 | - $tipo = "numeric"; | ||
87 | - for ($i=0; $i<$testar;$i++){ | ||
88 | - $s = $linhas[$i]; | ||
89 | - $v = $s[$j]; | ||
90 | - if(!is_numeric($v)){ | ||
91 | - $tipo = "varchar"; | 82 | + fclose ($handle); |
83 | + //decobre o tipo de coluna | ||
84 | + $testar = 10; | ||
85 | + if(count($linhas) < $testar){ | ||
86 | + $testar = count($linhas); | ||
92 | } | 87 | } |
93 | - } | ||
94 | - $tipoColuna[$colunas[$j]] = $tipo; | ||
95 | - } | ||
96 | - echo "<br>Tipos das colunas: <pre>"; | ||
97 | - var_dump($tipoColuna); | ||
98 | - echo "</pre>"; | ||
99 | - //gera o script para criar a tabela | ||
100 | - $sqltabela = array(); | ||
101 | - $sql = "CREATE TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."("; | ||
102 | - foreach($colunas as $coluna){ | ||
103 | - $sql .= ",".strtolower($coluna)." ".$tipoColuna[$coluna]; | ||
104 | - } | ||
105 | - $sql .= ")WITH(OIDS=FALSE)"; | ||
106 | - $sqltabela[] = $sql; | ||
107 | - $sqltabela[] = "ALTER TABLE ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]." OWNER TO ".$conexao["usuario"]; | ||
108 | - echo "<br>Sql tabela: <pre>"; | ||
109 | - var_dump($sqltabela); | ||
110 | - echo "</pre>"; | ||
111 | - //gera o script para inserir os dados | ||
112 | - $linhasql = array(); | ||
113 | - $insert = "INSERT INTO ".$_POST["i3GEOuploadesquema"].".".$_POST["tabelaDestino"]."(".strtolower(implode(",",$colunas)).")"; | ||
114 | - $nlinhas = count($linhas); | ||
115 | - for ($i=0; $i<$nlinhas;$i++){ | ||
116 | - $s = $linhas[$i]; | ||
117 | - $vs = array(); | ||
118 | - $vs[] = $i; | ||
119 | - for ($j=0; $j<$ncolunas;$j++){ | ||
120 | - if($tipoColuna[$colunas[$j]] == "varchar"){ | ||
121 | - $vs[] = "'".$s[$j]."'"; | 88 | + $tipoColuna = array(); |
89 | + for ($j=0; $j<$ncolunas;$j++){ | ||
90 | + $tipo = "numeric"; | ||
91 | + for ($i=0; $i<$testar;$i++){ | ||
92 | + $s = $linhas[$i]; | ||
93 | + $v = $s[$j]; | ||
94 | + if(!is_numeric($v)){ | ||
95 | + $tipo = "varchar"; | ||
96 | + } | ||
97 | + } | ||
98 | + $tipoColuna[$colunas[$j]] = $tipo; | ||
122 | } | 99 | } |
123 | - else{ | ||
124 | - $vs[] = $s[$j]; | 100 | + echo "<br>Tipos das colunas: <pre>"; |
101 | + var_dump($tipoColuna); | ||
102 | + echo "</pre>"; | ||
103 | + //gera o script para criar a tabela | ||
104 | + $sqltabela = array(); | ||
105 | + $sql = "CREATE TABLE ".$_POST["i3GEOuploadcsvesquema"].".".$_POST["tabelaDestinocsv"]."("; | ||
106 | + $temp = array(); | ||
107 | + foreach($colunas as $coluna){ | ||
108 | + $temp[] = strtolower($coluna)." ".$tipoColuna[$coluna]; | ||
125 | } | 109 | } |
126 | - } | ||
127 | - $linhasql[] = $insert."VALUES(".implode(",",$vs).")"; | ||
128 | - } | ||
129 | - try { | ||
130 | - $dbh = new PDO('pgsql:dbname='.$conexao["bancodedados"].';user='.$conexao["usuario"].';password='.$conexao["senha"].';host='.$conexao["host"].';port='.$conexao["porta"]); | ||
131 | - } catch (PDOException $e) { | 110 | + $sql .= implode(",",$temp).") WITH(OIDS=FALSE)"; |
111 | + $sqltabela[] = $sql; | ||
112 | + $sqltabela[] = "ALTER TABLE ".$_POST["i3GEOuploadcsvesquema"].".".$_POST["tabelaDestinocsv"]." OWNER TO ".$conexao["usuario"]; | ||
113 | + echo "<br>Sql tabela: <pre>"; | ||
114 | + var_dump($sqltabela); | ||
115 | + echo "</pre>"; | ||
116 | + //gera o script para inserir os dados | ||
117 | + $linhasql = array(); | ||
118 | + $insert = "INSERT INTO ".$_POST["i3GEOuploadcsvesquema"].".".$_POST["tabelaDestinocsv"]."(".strtolower(implode(",",$colunas)).")"; | ||
119 | + $nlinhas = count($linhas); | ||
120 | + for ($i=0; $i<$nlinhas;$i++){ | ||
121 | + $s = $linhas[$i]; | ||
122 | + $vs = array(); | ||
123 | + for ($j=0; $j<$ncolunas;$j++){ | ||
124 | + if($tipoColuna[$colunas[$j]] == "varchar"){ | ||
125 | + $vs[] = "'".$s[$j]."'"; | ||
126 | + } | ||
127 | + else{ | ||
128 | + $vs[] = $s[$j]; | ||
129 | + } | ||
130 | + } | ||
131 | + $linhasql[] = $insert."VALUES(".implode(",",$vs).")"; | ||
132 | + } | ||
133 | + //echo "<pre>"; | ||
134 | + //var_dump($linhasql);exit; | ||
135 | + try { | ||
136 | + $dbh = new PDO('pgsql:dbname='.$conexao["bancodedados"].';user='.$conexao["usuario"].';password='.$conexao["senha"].';host='.$conexao["host"].';port='.$conexao["porta"]); | ||
137 | + } catch (PDOException $e) { | ||
132 | echo 'Connection failed: ' . $e->getMessage(); | 138 | echo 'Connection failed: ' . $e->getMessage(); |
133 | } | 139 | } |
134 | - | 140 | + |
135 | foreach($sqltabela as $linha){ | 141 | foreach($sqltabela as $linha){ |
136 | try { | 142 | try { |
137 | $dbh->query($linha); | 143 | $dbh->query($linha); |
@@ -147,11 +153,12 @@ if (isset($_FILES['i3GEOuploadcsv']['name'])){ | @@ -147,11 +153,12 @@ if (isset($_FILES['i3GEOuploadcsv']['name'])){ | ||
147 | } | 153 | } |
148 | } | 154 | } |
149 | echo "<br>Feito!!!<br>Faça o reload da página"; | 155 | echo "<br>Feito!!!<br>Faça o reload da página"; |
150 | -} | ||
151 | -else{ | 156 | + } |
157 | + else{ | ||
152 | echo "<p class='paragrafo' >Erro ao enviar o arquivo. Talvez o tamanho do arquivo seja maior do que o permitido.</p>"; | 158 | echo "<p class='paragrafo' >Erro ao enviar o arquivo. Talvez o tamanho do arquivo seja maior do que o permitido.</p>"; |
153 | } | 159 | } |
154 | 160 | ||
155 | ?> | 161 | ?> |
162 | + | ||
156 | </body> | 163 | </body> |
157 | </html> | 164 | </html> |