De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Pablo Dall'Oglio
Data de Publicação: 10 de September de 2008
Há muitos anos atrás eu precisava converter diversos bancos de dados no foramato DBF para o formato SQL. Naquela época eu tinha desenvolvido uma ferramenta simples, a qual estava guardada naquelas pastas do computador que já chegam a ter pó de tanto tempo que não são visitadas.
Apesar de não utilizar mais esta ferramenta, sei que no Brasil existe muito programa feito em clipper, eu mesmo desenvolvi vários na década de 90. Muitos ainda estão ativos, mas uma hora irão migrar. E neste caso, se alguém precisar extrair as informações, coloco aqui um programinha simples que lê o arquivo .DBF e gera os SQL necessários para importá-lo em uma base de dados relacional.
Ao rodar o programa pela linha de comando, o mesmo irá indicar como proceder
com a conversão: php dbf2sql <dbfile> <tablename> > output.sql
<? if (count($argv) != 3) { echo "#####################################################\n"; echo "# dbf2sql : Converts DBF files to SQL instructions #\n"; echo "# sintax: #\n"; echo "# php dbf2sql <dbfile> <tablename> > output.sql #\n"; echo "# #\n"; echo "# author : Pablo Dall'Oglio <pablo at php.net> #\n"; echo "#####################################################\n"; die; } if (!function_exists('dbase_open')) { die("DBF support (--enable-dbase) is not enabled"); } dbf2sql($argv[1], $argv[2]); /* function dbf2sql * Converts a DBF file into SQL instructions * @dbffile = DBF file name * @tablename = Target table name */ function dbf2sql($dbffile, $tablename) { # Opens Dbase and SQLite files $dbf = @dbase_open($dbffile, 0); $pg_types['memo'] = 'text'; $pg_types['character'] = 'varchar'; $pg_types['number'] = 'float'; $pg_types['date'] = 'date'; if ($dbf) { # Get Number or records and columns info $num_records = dbase_numrecords($dbf); $columns = dbase_get_header_info($dbf); # Create the SQLite table $sql = "create table $tablename ("; foreach ($columns as $column) { $name = $column['name']; $type = $pg_types[$column['type']]; $len = $column['length']; if ($type == 'character') { $type.="($len)"; } $sql .= "$name $type,"; } $sql = substr($sql,0,-1) . ')'; echo "$sql;\n"; # Loop the Dbase records for($index=1; $index <= $num_records; $index ++) { # Get one record $record = dbase_get_record($dbf, $index); // get the actual record # Ignore deleted fields if ($record["deleted"] != "1") { # Insert the record $query = "insert into $tablename values("; foreach ($record as $key=>$field) { if ($key!=='deleted') { $field = str_replace("'", "\'", $field); $field = trim($field); $query .= "'$field',"; } } $query = substr($query,0,-1) . ')'; echo "$query;\n"; } } } else { die("Cannot open DBF file"); } return true; } ?>
Fonte: http://www.dalloglio.net/63
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários