Pasta não encontrada"; exit (); } echo "

"; ob_flush (); flush (); sleep ( 2 ); if (! file_exists ( $_SESSION ["dir_tmp"] ) || empty ( $_SESSION ["dir_tmp"] )) { echo ""; exit (); } // verifica nomes verificaNome ( $_FILES ['i3GEOuploadcsv'] ['name'] ); // remove acentos $nomePrefixo = "csv2pg" . (rand ( 9000, 10000 )) * - 1; // sobe arquivo $Arquivo = $_FILES ['i3GEOuploadcsv'] ['tmp_name']; $status = move_uploaded_file ( $Arquivo, $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv" ); if ($status != 1) { echo ""; exit (); } if (! file_exists ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv" )) { echo ""; exit (); } $checkphp = \admin\php\funcoesAdmin\fileContemString ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "Arquivo csv invalido"; unlink ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv" ); exit (); } echo ""; // // gera o script para inclusao no banco // // pega a lista de colunas e identifica o separador utilizado $handle = fopen ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "r" ); $cabecalho = fgets ( $handle ); $buffer = str_replace ( '"', '', $cabecalho ); $buffer = str_replace ( "'", '', $buffer ); $buffer = str_replace ( "\n", '', $buffer ); $buffer = str_replace ( "\r", '', $buffer ); $colunas = explode ( ";", $buffer ); $separador = ";"; if (count ( $colunas ) == 1) { $colunas = explode ( ",", $buffer ); $separador = ","; } echo ""; echo ""; fclose ( $handle ); echo ""; echo ""; ob_flush (); flush (); sleep ( 2 ); // // testa as linhas e separadores // $handle = fopen ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "r" ); $linhas = array (); $ncolunas = count ( $colunas ); $linhas50 = array (); while ( ! feof ( $handle ) ) { $buffer = fgets ( $handle ); if ($buffer != $cabecalho) { $buffer = str_replace ( "'", '', $buffer ); $buffer = str_replace ( "\n", '', $buffer ); $buffer = str_replace ( "\r", '', $buffer ); if ($buffer != "") { $temp = explode ( $separador, $buffer ); if (count ( $linhas50 ) < 51) { $linhas50 [] = $temp; } if (count ( $temp ) != $ncolunas) { echo ""; exit (); } } } } fclose ( $handle ); // // pega os tipos das colunas // $contador = 0; foreach ( $colunas as $coluna ) { $tipo = "numeric"; for($i = 1; $i < 50; $i ++) { $s = $linhas50 [$i]; $v = $s [$contador]; if (! is_numeric ( $v )) { $tipo = "varchar"; } } $tipoColuna [$colunas [$contador]] = $tipo; $contador = $contador + 1; } echo ""; $sqinsert = array (); // verifica autorizacao para o esquema if (empty ( $_POST ["i3GEOuploadEsquemaDestino"] ) || ! in_array ( $_POST ["i3GEOuploadEsquemaDestino"], $_SESSION ["i3geoUploadDataWL"] ["postgis"] ["esquemas"] )) { echo ""; exit (); } $conexao = $_SESSION ["i3geoUploadDataWL"] ["postgis"] ["conexao"]; try { $dbh = new PDO ( 'pgsql:dbname=' . $conexao ["dbname"] . ';user=' . $conexao ["user"] . ';password=' . $conexao ["password"] . ';host=' . $conexao ["host"] . ';port=' . $conexao ["port"] ); } catch ( PDOException $e ) { echo ""; exit (); } if (empty ( $_POST ["i3GEOuploadNomeTabela"] ) || empty ( $_POST ["i3GEOuploadEsquemaDestino"] )) { exit (); } // gera o script para criar a tabela // verifica se a tabela ja existe $sql = "SELECT table_name FROM information_schema.tables where table_schema = '" . $_POST ["i3GEOuploadEsquemaDestino"] . "' AND table_name = '" . $_POST ["i3GEOuploadNomeTabela"] . "'"; $res = $dbh->query ( $sql, PDO::FETCH_ASSOC ); if (count ( $res->fetchAll () ) > 0) { $tabelaExiste = true; } else { $tabelaExiste = false; } // encoding do banco de dados $sql = "SELECT pg_encoding_to_char(encoding) FROM pg_database WHERE datname = '" . $conexao ["dbname"] . "'"; $res = $dbh->query ( $sql, PDO::FETCH_ASSOC ); $encodingdb = $res->fetchAll (); $encodingdb = $encodingdb [0]; $encodingdb = $encodingdb ["pg_encoding_to_char"]; if ($encodingdb == "UTF8") { $encodingdb = "UTF-8"; } if ($encodingdb == "LATIN1") { $encodingdb = "ISO-8859-1"; } // a tabela nao existe e e do tipo create $sqltabela = array (); if ($tabelaExiste == false && $_POST ["i3GEOuploadTipoOperacao"] == "criar") { $sql = "CREATE TABLE " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . "("; $temp = array (); if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { $temp [] = "the_geom geometry"; } foreach ( $colunas as $coluna ) { $temp [] = \admin\php\funcoesAdmin\removeAcentos ( strtolower ( $coluna ) ) . " " . $tipoColuna [$coluna]; } $sql .= implode ( ",", $temp ) . ")WITH(OIDS=FALSE)"; $sqltabela [] = $sql; $sqltabela [] = "ALTER TABLE " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " OWNER TO " . $conexao ["user"]; if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { $sqltabela [] = "CREATE INDEX " . $_POST ["i3GEOuploadNomeTabela"] . "_indx_thegeom ON " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " USING gist (the_geom )"; } if (! empty ( $_POST ["i3GEOuploadComentario"] )) { $enc = mb_detect_encoding ( $texto ); $_POST ["i3GEOuploadComentario"] = mb_convert_encoding ( $_POST ["i3GEOuploadComentario"], $encodingdb, $enc ); $sqltabela [] = "COMMENT ON TABLE " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " IS '" . $_POST ["i3GEOuploadComentario"] . "'"; } echo ""; } if ($tabelaExiste == true && $_POST ["i3GEOuploadTipoOperacao"] == "criar") { echo ""; exit (); } // se a tabela existe e e para atualizar os registros if ($tabelaExiste == true && $_POST ["i3GEOuploadTipoOperacao"] == "atualizar") { $sqltabela [] = "delete from " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"]; } // gera o script para inserir os dados echo ""; ob_flush (); flush (); sleep ( 1 ); $linhas = array (); $insert = "INSERT INTO " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " (" . strtolower ( \admin\php\funcoesAdmin\removeAcentos ( implode ( ",", $colunas ) ) ) . ")"; if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { $insert = "INSERT INTO " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " (" . strtolower ( \admin\php\funcoesAdmin\removeAcentos ( implode ( ",", $colunas ) ) ) . ",the_geom)"; } $escapar = "'"; //descobre o indice do array que contem a coluna com x e com y $x = ""; $y = ""; if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { for($i = 0; $i < count ( $colunas ); $i ++) { if($colunas[$i] == $_POST ["i3GEOuploadColunaX"]){ $x = $i; } if($colunas[$i] == $_POST ["i3GEOuploadColunaY"]){ $y = $i; } } } $handle = fopen ( $_SESSION ["dir_tmp"] . "/" . $nomePrefixo . ".csv", "r" ); $numcsv = 0; while ( ! feof ( $handle ) ) { $buffer = fgets ( $handle ); $numcsv = $numcsv + 1; if ($buffer != $cabecalho) { $buffer = str_replace ( "'", '', $buffer ); $buffer = str_replace ( '"', '', $buffer ); $buffer = str_replace ( "\n", '', $buffer ); $buffer = str_replace ( "\r", '', $buffer ); if ($buffer != "") { $l = explode ( $separador, $buffer ); $vs = array (); for($i = 0; $i < count ( $colunas ); $i ++) { $escape = ""; if ($tipoColuna [$colunas [$i]] == "varchar") { $texto = str_replace(array("'",'"'),"",$l [$i]); $enc = mb_detect_encoding ( $texto ); $textosl = addcslashes ( $texto, $escapar ); if ($textosl != $texto) { $escape = "E"; } if ($enc != "" && $enc != $encodingdb) { $textosl = "$escape'" . mb_convert_encoding ( $textosl, $encodingdb, $enc ) . "'"; } else { $textosl = "$escape'" . $textosl . "'"; } if ($textosl == "''") { $textosl = 'null'; } $vs [] = $textosl; } else { $valor = $l [$i]; if ($valor == "" || (empty ( $valor ) && $valor != 0)) { $valor = 'nulo'; } $vs [] = $valor; } } if (! empty ( $_POST ["i3GEOuploadColunaX"] ) && ! empty ( $_POST ["i3GEOuploadColunaY"] )) { $vx = str_replace(",",".",$l [$x]); $vy = str_replace(",",".",$l [ $y]); if ($_POST ["i3GEOuploadSridDestino"] == $_POST ["i3GEOuploadSridOrigem"]) { $vs[] = "ST_PointFromText('POINT(". $vx . " " . $vy .")','".$_POST["i3GEOuploadSridDestino"]."')"; } else { $vs[] = "ST_transform (ST_PointFromText('POINT(". $vx . " " . $vy .")','".$_POST["i3GEOuploadSridDestino"]."')," . $_POST["i3GEOuploadSridDestino"] . ")"; } } $str = implode ( ",", $vs ); $str = str_replace ( "nulo", 'null', $str ); $linhas [] = $insert . "VALUES(" . $escape . "" . $str . ")"; } } } fclose ( $handle ); if (! in_array ( $_POST ["i3GEOuploadColunaGid"], $colunas ) && $_POST ["i3GEOuploadTipoOperacao"] == "criar") { $linhas [] = "alter table " . $_POST ["i3GEOuploadEsquemaDestino"] . "." . $_POST ["i3GEOuploadNomeTabela"] . " add " . $_POST ["i3GEOuploadColunaGid"] . " serial CONSTRAINT " . $_POST ["i3GEOuploadNomeTabela"] . "_gid_pkey PRIMARY KEY"; } if ($_POST ["i3GEOuploadApenasScript"] == "on") { echo ""; } else { // aqui o sql e executado verdadeiramente // antes e feito um backup da tabela // $sqltabela sera vazio se a tabela ja existir foreach ( $sqltabela as $linha ) { try { $dbh->query ( $linha ); } catch ( PDOException $e ) { echo "