Clipper On Line • Ver Tópico - Conversor SQL para DBF

Conversor SQL para DBF

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Conversor SQL para DBF

Mensagempor Dr.Microso » 03 Out 2012 15:01

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!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes

Conversor SQL para DBF

Mensagempor alxsts » 03 Out 2012 15:22

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.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Conversor SQL para DBF

Mensagempor Dr.Microso » 03 Out 2012 15:59

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...).
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!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes

Conversor SQL para DBF

Mensagempor Imatech » 03 Out 2012 16:23

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):
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 ):
"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","","",""
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar de usuário

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 350
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes

Conversor SQL para DBF

Mensagempor Dr.Microso » 04 Out 2012 08:46

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!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes

Conversor SQL para DBF

Mensagempor Jairo Maia » 12 Out 2012 19:02

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:
/***********************************
   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
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Conversor SQL para DBF

Mensagempor Dr.Microso » 12 Out 2012 20:40

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!
"O que domina aos outros é forte; o que domina a si mesmo é poderoso." [ Lao-Tsé - séc VII AC]
"É tipo uma Alquimia... Porções de código viram soluções que mutam-se fisicamente em sorrisos e outros, como o notebook que uso para escrever estas linhas..." dr.microso@hotmail.com
Avatar de usuário

Dr.Microso
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 173
Data de registro: 12 Jan 2009 20:26
Cidade/Estado: Belo Horizonte, MG
Curtiu: 119 vezes
Mens.Curtidas: 5 vezes

Conversor SQL para DBF

Mensagempor Imatech » 13 Out 2012 00:14

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...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar de usuário

Imatech
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 350
Data de registro: 24 Ago 2010 23:48
Cidade/Estado: Goiânia-GO
Curtiu: 4 vezes
Mens.Curtidas: 27 vezes




Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 2 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro