============================================================= Partcipe das enquetes sobre os novos rumos da comunidade! Acesse http://www.pgfoundry.org:8080/novosRumos =============================================================Enviando o script em PHP.. Mas o problema, creio que nao seja o script especificamente, e sim na biblioteca de dbase para o php.
Existe alguma outra maneira que seja razoavelmente facil de importar esse dbf pro postgresql?
abraços,
artz
---
<?
// This is a class that converts a .DBF file into SQL intructions
// Esta classe converte arquivo .DBF para instruções SQL
// Autor : Pablo Dall'Oglio ([EMAIL PROTECTED])
// Date : Saturday, 07, 2001
// Correções de bugs e adaptação para as instruções do PostgreSQL
// Bugs fix and adaptation for PostgreSQL instructions
// Autor: Arthur Molina ([EMAIL PROTECTED])
// Date : 15/04/2005
class dbf2sql
{
var $db;
var $num_records;
var $num_fields;
var $nome_arq;
var $table;
var $myfile;
// This function open DBF file, set the variables
// returns 1 if open with success otherwise, returns 0
function opendb($dbffile, $sqlfile, $tablename)
{
if (($dbffile) && ($sqlfile))
{
$this->db = @dbase_open($dbffile, 0);
if ($this->db)
{
$this->num_records = dbase_numrecords($this->db);
$this->num_fields = dbase_numfields($this->db);
}
else
{
return(0);
}
$this->dbf_nome = $dbffile;
$this->nome_arq = $sqlfile;
$this->table = $tablename;
return(1);
}
return(0);
}
// This function open the SQL file for write
// returns 1 if open with success otherwise, returns 0
function opensql()
{
$this->myfile = @fopen($this->nome_arq, "w");
if (!$this->myfile)
{
return(0);
}
return(1);
}
// This function close both DBf and SQL files
function closeall()
{
fclose($this->myfile);
dbase_close($this->db);
}
// This function get the columns from DBF file and
// whrite it into a SQL file
function GetColumns($banco)
{
$saida = '';
$array_columns = $this->get_dbf_header();
$total = count($array_columns);
// $linha_mens = "CREATE DATABASE $banco;\n\n";
$linha_mens .= "CREATE TABLE $this->table (";
$linha_mens .= "IdxBD SERIAL, ";
for($count=0; $count<$total; $count++)
{
Switch ($array_columns[$count][1])
{
Case 'C': // Char
$linha_mens .= $array_columns[$count][0] . " VARCHAR(" . $array_columns[$count][2] . "), ";
Break;
Case 'D': //Date
$linha_mens .= $array_columns[$count][0] . " DATE, ";
Break;
Case 'F': //Float ***
if($array_columns[$count][3]==0)
{
$linha_mens .= $array_columns[$count][0] . " INT8, ";
} else {
$linha_mens .= $array_columns[$count][0] . " DECIMAL(" . $array_columns[$count][2] . ", " . $array_columns[$count][3] . "), ";
}
Break;
Case 'L': //Logical
$linha_mens .= $array_columns[$count][0] . " BOOL, ";
Break;
Case 'M': //Memo
$linha_mens .= $array_columns[$count][0] . " VARCHAR(255), ";
Break;
Case 'N': //Number ***
if($array_columns[$count][3]==0)
{
$linha_mens .= $array_columns[$count][0] . " INT8, ";
} else {
$linha_mens .= $array_columns[$count][0] . " DECIMAL(" . $array_columns[$count][2] . ", " . $array_columns[$count][3] . "), ";
}
Break;
Case 'S': //Short
$linha_mens .= $array_columns[$count][0] . " SMALLINT, ";
Break;
}
}
$linha_mens .= "PRIMARY KEY (IdxBD));\n";
fputs($this->myfile, "$linha_mens");
$saida .= $linha_mens;
// loop the database
for($index=1; $index <= $this->num_records; $index ++)
{ // get the actual record
$record = dbase_get_record($this->db, $index);
//BUG aqui!!! - quando a coluna é numero e o dado está vazio, ele retorna zero e não vazio como deveria...
// linha_mens is the SQL instruction to write into SQL file
$linha_mens = "INSERT INTO $this->table ( ";
// get the column names
for($count=0; $count<$total; $count++)
{
$linha_mens .= $array_columns[$count][0] . ", ";
}
$linha_mens = substr($linha_mens,0, strlen($linha_mens)-2);
$linha_mens .= " ) VALUES (";
// get the column values
for($count=0; $count<$total; $count++)
{//echo $record[$count] . " - "; ///////////////////
$linha_mens .= "'" . trim($record[$count]) . "', ";
}
$linha_mens = substr($linha_mens,0, strlen($linha_mens)-2);
$linha_mens .= " ); \n";
// Ignore deleted fields
if ($record["deleted"] != "1")
{ fputs($this->myfile, "$linha_mens");
$saida .= $linha_mens;}
}
return $saida;
}
// This function open the dbfile and
// returns the header in a array
function get_dbf_header() {
$dbfname = $this->dbf_nome;
$fdbf = fopen($dbfname,'r');
$dbfhdrarr = array();
$buff32 = array();
$i = 1;
$goon = true;
while ($goon) {
if (!feof($fdbf)) {
$buff32 = fread($fdbf,32);
if ($i > 1) {
if (substr($buff32,0,1) == chr(13)) {
$goon = false;
} else {
$pos = strpos(substr($buff32,0,10),chr(0));
$pos = ($pos == 0?10:$pos);
$fieldname = substr($buff32,0,$pos);
$fieldtype = substr($buff32,11,1);
$fieldlen = ord(substr($buff32,16,1));
$fielddec = ord(substr($buff32,17,1));
array_push($dbfhdrarr, array($fieldname,$fieldtype,$fieldlen,$fielddec));
}
}
$i++;
} else {
$goon = false;
}
}
fclose($fdbf);
return($dbfhdrarr);
}
}
?>
[EMAIL PROTECTED] escreveu:
<[EMAIL PROTECTED]><[EMAIL PROTECTED]><[EMAIL PROTECTED]><[EMAIL PROTECTED]><[EMAIL PROTECTED]> [EMAIL PROTECTED]>[EMAIL PROTECTED]>[EMAIL PROTECTED]><[EMAIL PROTECTED]><[EMAIL PROTECTED]> [EMAIL PROTECTED]>[EMAIL PROTECTED]><[EMAIL PROTECTED]>Message: 6 [EMAIL PROTECTED]>[EMAIL PROTECTED]>
Date: Mon, 17 Jul 2006 13:58:43 -0300
From: "Nabucodonosor Coutinho" <[EMAIL PROTECTED]>
Subject: Re: [PostgreSQL-Brasil] dbf -> PG (PHP)
To: " Grupo de Usuários do PostgreSQL no Brasil "
[EMAIL PROTECTED]>[EMAIL PROTECTED]>
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Manda teu script que fica mais facil
Em 17/07/06, Arthur Molina<[EMAIL PROTECTED]> escreveu:
> =============================================================
> Partcipe das enquetes sobre os novos rumos da comunidade!
> Acesse http://www.pgfoundry.org:8080/novosRumos
> =============================================================
>
> oi gente,
>
> fiz uma pequena função em PHP que converte arquivos DBF em linhas de sql
> para rodar no Postgre. Só que estou tendo um problema: quando utilizo coluna
> de inteiro e uma das celulas está vazia, o comando do php que uso para pegar
> o dado do DBF (dbase_get_record) retorna zero em vez de vazio.
>
> Isso prejudica a minha analise de dados, pois quando o dado está zero é pq
> determinada variavel nao esta presente no objeto descrito pela linha, e
> quando está vazia é pq nao existem dados pesquisados sobre essa variavel no
> referido objeto.
>
> Alguem teria outra solução?
>
> abraços,
> artz
>
>
> ________________________________
> Novidade no Yahoo! Mail: receba alertas de novas mensagens no seu celular.
> Registre seu aparelho agora!
>
>
> _______________________________________________
> Grupo de Usuários do PostgreSQL no Brasil
> Antes de perguntar consulte o manual
> http://pgdocptbr.sourceforge.net/
>
>
--
Nabucodonosor Coutinho
Database Administrator
PostgreSQL Brasil - www.postgresql.org.br
Accu Hosting - www.accuhosting.com
------------------------------
Message: 7
Date: Mon, 17 Jul 2006 14:22:26 -0300
From: "SENAI Joinville" <[EMAIL PROTECTED]>
Subject: [PostgreSQL-Brasil] "campo_tabela" does not exist
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Quando tento fazer uma consulta sql, através de um query , na hora de
executar a pesquisa ele não reconhece o campo, ja coloquei entre aspas
duplas, simples, e nada ele não encontra o campo, e eu sei q o campo existe
pois esta la na tabela, se alguem poder me ajudar agradeço atenciosamente
fabio
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://pgfoundry.org/pipermail/brasil-usuarios/attachments/20060717/e4d801ba/attachment-0001.html
------------------------------
Message: 8
Date: Mon, 17 Jul 2006 14:24:20 -0300
From: "SENAI Joinville" <[EMAIL PROTECTED]>
Subject: [PostgreSQL-Brasil] Conexão
To: [email protected]
Message-ID:
<[EMAIL PROTECTED]>
Content-Type: text/plain; charset="iso-8859-1"
Porq sempre q vou conectar no banco , ele pede uma senha e um usuário, onde
consigo desabilitar este ? pois ate quando o executavel roda ele pede
usuario e senha e não existe nenhum cadastrado, tanto q se eudeixar em
branco e der ok, ele passa numa boa.
grato desde ja
fabio
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: http://pgfoundry.org/pipermail/brasil-usuarios/attachments/20060717/94376f32/attachment.html
------------------------------
_______________________________________________
Grupo de Usuários do PostgreSQL no Brasil
http://www.postgresql.org.br
http://pgfoundry.org/mailman/listinfo/brasil-usuarios
Fim da Digest Brasil-Usuarios, volume 239, assunto 3
****************************************************
[EMAIL PROTECTED]>[EMAIL PROTECTED]>[EMAIL PROTECTED]>
Você quer respostas para suas perguntas? Ou você sabe muito e quer compartilhar seu conhecimento? Experimente o Yahoo! Respostas!
_______________________________________________ Grupo de Usuários do PostgreSQL no Brasil Antes de perguntar consulte o manual http://pgdocptbr.sourceforge.net/
