Página 1 de 1

Conversor SQL para DBF

Enviado: 03 Out 2012 15:01
por Dr.Microso
Prezados, saudações!

Estou com 3 tabelas gigantes aqui com a estensão .SQL e preciso de um utilitário que fizesse essa conversão para .DBF, alguém conhece algum?
O inverso encontramos com facilidade na internet...

Um abraço!

Conversor SQL para DBF

Enviado: 03 Out 2012 15:22
por alxsts
Olá!

A extensão .SQL, por si só, não diz muito sobre o formato do conteúdo. Pode ser um export, em formato texto separado por vírgulas.

Teria mais detalhes, como o banco que gerou este arquivo? Abriu o arquivo para checar o tipo de conteúdo? É binário ou texto?

Talvez esse mesmo banco exporte os dados das tabelas em .DBF ou .CSV. Sabendo o formato ficará mais fácil. Ou com [x]Harbour possa ser possível acessá-lo diretamente.

Conversor SQL para DBF

Enviado: 03 Out 2012 15:59
por Dr.Microso
Essas tabelas SQL são resultados de um EXPORT um .ABS (Absolute Database - Delphi) que não faz direto para .DBF.
Eis o trecho inicial de uma delas (a apartir da linha final aqui, é uma repetição contínua até o final do arquivo...).

Código: Selecionar todos

DROP TABLE sm;
CREATE TABLE sm (
  VO VARCHAR(1),
  CD VARCHAR(4),
  CM VARCHAR(5),
  NQ VARCHAR(50),
  CP VARCHAR(5),
  NL VARCHAR(3),
  MT VARCHAR(1),
  DS VARCHAR(4),
  RG VARCHAR(20),
  RT VARCHAR(10),
  FL VARCHAR(10), 
  INDEX smA (VO, NQ), 
  INDEX smC (NL), 
  INDEX smF (MT, NQ), 
  INDEX smI (VO, CD), 
  INDEX smJ (VO, NL)
);
INSERT INTO sm values ('G', 'GTaa', NULL, 'SNC, depressores do', NULL, '---', '-', 'Taa', NULL, NULL, NULL);
INSERT INTO sm values ('a', 'GTaa', '_#Gbz', 'Anestésicos gerais>>', NULL, 'Taa', '>', 'Saa', NULL, NULL, NULL);
INSERT INTO sm values ('a', 'GTab', NULL, 'Anestésicos intravenosos>>', NULL, 'Saa', '>', 'Sbw', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Barbitúricos', NULL, 'Sbw', NULL, 'ƒ01', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Benzodiazepínicos', NULL, 'Sbw', NULL, 'ƒ02', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Opióides', NULL, 'Sbw', NULL, 'ƒ03', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Diversos', NULL, 'Sbw', NULL, 'ƒ04', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Associação', NULL, 'Sbw', NULL, 'ƒ05', NULL, NULL, NULL);
INSERT INTO sm values ('a', 'GTac', NULL, 'Sedativos-hipnóticos>>', NULL, 'Taa', '>', 'Sab', NULL, NULL, NULL);
...
Grato!

Conversor SQL para DBF

Enviado: 03 Out 2012 16:23
por Imatech
Olá Dr.Microso !

Os arquivos que você possui são do tipo: Texto Plano com os comandos SQL para criação da Tabela e inserção dos dados ( uso em qquer formato de dados com suporte a linguagem SQL )

Caso tenha afinidade com a linguagem SQL, poderá usar: Database Desktop ( Delphi ), FoxPro ou o DBF Commander; criando a tabela .dbf desejada...

Alternativamente pode-se usar qquer editor de texto e deixar no formato CSV ( segue exemplo ):

Antes ( Plain Text):

Código: Selecionar todos

INSERT INTO sm values ('G', 'GTaa', NULL, 'SNC, depressores do', NULL, '---', '-', 'Taa', NULL, NULL, NULL);
INSERT INTO sm values ('a', 'GTaa', '_#Gbz', 'Anestésicos gerais>>', NULL, 'Taa', '>', 'Saa', NULL, NULL, NULL);
INSERT INTO sm values ('a', 'GTab', NULL, 'Anestésicos intravenosos>>', NULL, 'Saa', '>', 'Sbw', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Barbitúricos', NULL, 'Sbw', NULL, 'ƒ01', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Benzodiazepínicos', NULL, 'Sbw', NULL, 'ƒ02', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Opióides', NULL, 'Sbw', NULL, 'ƒ03', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Diversos', NULL, 'Sbw', NULL, 'ƒ04', NULL, NULL, NULL);
INSERT INTO sm values ('b', 'GTab', NULL, 'Associação', NULL, 'Sbw', NULL, 'ƒ05', NULL, NULL, NULL);
INSERT INTO sm values ('a', 'GTac', NULL, 'Sedativos-hipnóticos>>', NULL, 'Taa', '>', 'Sab', NULL, NULL, NULL);
Depois ( CSV ):

Código: Selecionar todos

"G","GTaa","","SNC, depressores do","","---","-","Taa","","",""
"a","GTaa","_#Gbz","Anestésicos gerais>>","","Taa",">","Saa","","",""
"a","GTab","","Anestésicos intravenosos>>","","Saa",">","Sbw","","",""
"b","GTab","","Barbitúricos","","Sbw","","ƒ01","","",""
"b","GTab","","Benzodiazepínicos","","Sbw","","ƒ02","","",""
"b","GTab","","Opióides","","Sbw","","ƒ03","","",""
"b","GTab","","Diversos","","Sbw","","ƒ04","","",""
"b","GTab","","Associação","","Sbw","","ƒ05","","",""
"a","GTac","","Sedativos-hipnóticos>>","","Taa",">","Sab","","",""

Conversor SQL para DBF

Enviado: 04 Out 2012 08:46
por Dr.Microso
Prezado Imatech, não possuo afinidade com a linguagem SQL...

Por favor, poderia me passar um passo-a-passo com o app DBF Commander?
Grato!

Conversor SQL para DBF

Enviado: 12 Out 2012 19:02
por Jairo Maia
Olá Dr.Microso,

Não sei se já resolveu a migração dos dados, mas como tenho que fazer o mesmo com um banco de CEPs em SQL neste mesmo formato: "Texto Plano com os comandos SQL" (que nem sabia que tinha essa denominação, aprendi neste tópico), acabei conseguindo, e montei um exemplo com as suas informações. Veja se ajuda:

Código: Selecionar todos

/***********************************
   Compilar: hbmk2 Arquivo.PRG -lxhb
*///////////////////////////////////

REQUEST DBFCDX

Function Main()

 Local i, cBuffer, cLinha, nQtdLin, nConta := 0, nHandler

 Local cArquivoSQL := "SQL_File.SQL"  // Arquivo Origem
 Local cArquivoCVS := "CSV_File.CSV"  // Arquivo de Transicao
 Local ArquivoDBF  := "DBF_File.DBF"  // Banco de Dados Destino

 RDDSetDefault( "DBFCDX" )
 DBSetDriver( "DBFCDX" )

 Clear Screen

 cBuffer := FOpen( cArquivoSQL, 2 )

 nHandler := FCreate( cArquivoCVS )

 Do While Hb_FReadLine( cBuffer, @cLinha, Nil, 255 ) = 0

  If ( "sm values" $ cLinha )

   cLinha := Subst( cLinha, At( ['], cLinha ) )
   cLinha := StrTran( cLinha, ");", "," )
   cLinha := StrTran( cLinha, "NULL", "" )
   cLinha := StrTran( cLinha, "'" )
   cLinha := Hb_AnsiToOem( cLinha ) + Hb_Eol()
   // cLinha := Upper( cLinha )

   FWrite( nHandler, cLinha, Len( cLinha ) )

  EndIf

  @ 5, 2 Say ++nConta

 EndDo

 FClose( nHandler )

 DbCreate(ArquivoDBF,{;
                     {"vo" ,"C", 01, 0},;
                     {"cd" ,"C", 04, 0},;
                     {"cm" ,"C", 05, 0},;
                     {"nq" ,"C", 50, 0},;
                     {"cp" ,"C", 05, 0},;
                     {"nl" ,"C", 03, 0},;
                     {"mt" ,"C", 01, 0},;
                     {"ds" ,"C", 04, 0},;
                     {"rg" ,"C", 20, 0},;
                     {"rt" ,"C", 10, 0},;
                     {"fl" ,"C", 10, 0};
                     })

  Use ( ArquivoDBF )

  @ 5, 2 Say "Copiando os dados para o DBF"

  Append From ( cArquivoCVS ) DELIMITED

  @ 5, 2 Say "Gerando os indices          "

  Index On Upper( vo + nq ) To ( "smA" )
  Index On Upper( nl ) To ( "smC" )
  Index On Upper( mt + nq ) To ( "smF" )
  Index On Upper( vo + cd ) To ( "smI" )
  Index On Upper( vo + nl ) To ( "smJ" )

Return Nil

Conversor SQL para DBF

Enviado: 12 Out 2012 20:40
por Dr.Microso
Prezado Jairo, olá!

Era uma pendência que não tinha resolvido ainda... Puxa!
Com certeza será também de utilidade aos próximos que tenham esse problema.
Muito, mas muito grato mesmo por sua ajuda!

Um forte e fraterno abraço!

Conversor SQL para DBF

Enviado: 13 Out 2012 00:14
por Imatech
Olá Dr.Microso !



Desculpe a falta de resposta (achei que já estava resolvido e não voltei ao tópico)



De qquer forma nosso amigo Jairo já forneceu bõa solução via código :)Pos



Sucesso...