Clipper On Line • Ver Tópico - converter dbf para sql

converter dbf para sql

Discussão sobre SQL

Moderador: Moderadores

 

converter dbf para sql

Mensagempor evaldowl » 15 Jul 2014 11:24

bom dia colegas ,

estou convertendo um banco de dados de dbf para sql , só que estou com problemas em alguns caracteres especiais , o sql nao reconhece , caracteres de pesos e mediads por exemplo. Andei pesquisando e acho que tenho que converter de ascii para utf8 . Alguem sabe como fazer essa conversão ?

Obrigado.
evaldowl
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 15
Data de registro: 06 Nov 2008 16:33
Cidade/Estado: sao paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

converter dbf para sql

Mensagempor cjp » 15 Jul 2014 16:52

Meu caro, não conheço utf8.

Mas também enfrentei problemas com essa conversão, e resolvi desta maneira:

            nrc=1
            do while nrc<60
               if asc(substr(tar,nrc,1))=0 .or. asc(substr(tar,nrc,1))=39
                 if empty(substr(tar,nrc))
                   exit
                 endif
                 ?"Retirando caractere estranho no tar"
                ?asc(substr(tar,nrc,1))
                 tar=substr(tar,1,nrc-1)+substr(tar,nrc+1)
                inkey(.8)
              else
                 nrc++
               endif
            enddo


Espero que te ajude.
Inacio de Carvalho Neto
cjp
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 969
Data de registro: 19 Nov 2010 21:29
Cidade/Estado: paraná
Curtiu: 6 vezes
Mens.Curtidas: 9 vezes

converter dbf para sql

Mensagempor evaldowl » 15 Jul 2014 18:13

ok,

obrigado pelo codigo, mas eu preciso fazer a nivel de arquivo inteiro , varrer o dbf inteiro e substituir
evaldowl
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 15
Data de registro: 06 Nov 2008 16:33
Cidade/Estado: sao paulo
Curtiu: 0 vez
Mens.Curtidas: 1 vez

converter dbf para sql

Mensagempor stefanotd » 16 Jul 2014 08:14

* tente exportar o DBF para um arquivo texto delimitado com "|" por exemplo
* abre o TXT em algum editor (notepad++) e converta para UTF8
* se o banco de dados for o PostgreSql, importe usando o comando COPY nome_tabela FROM nome_arquivo WITH DELIMITERS AS "|"

Estas duas funções pode ajudar também :

CREATE FUNCTION to_ascii(bytea,   name)
RETURNS text STRICT AS 'to_ascii_encname' LANGUAGE internal;


CREATE OR REPLACE FUNCTION fnc_texto_simples(pTexto varchar) 
RETURNS text AS
$$
   select UPPER(to_ascii(convert_to($1,'latin1'),'latin1' ))
   
$$
LANGUAGE sql IMMUTABLE STRICT;
stefanotd
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 32
Data de registro: 14 Mar 2014 08:10
Cidade/Estado: Interior/SP
Curtiu: 0 vez
Mens.Curtidas: 1 vez

converter dbf para sql

Mensagempor Jairo Maia » 16 Jul 2014 09:46

Olá Evaldo,

evaldowl escreveu:só que estou com problemas em alguns caracteres especiais , o sql nao reconhece , caracteres de pesos e mediads por exemplo
Evaldo, creio que não seja o problema de codificação, acho que pode ser outro, pelo seguinte: Se você diz que seu problema está principalmente com os campos de pesos e medidas, Mesmo que eles não sejam Numéricos, acho que são Números tipo caracteres, e neste caso não altera nada em UTF8.

Apenas variáveis textos com acentuação (caracteres especiais), é que fazem diferença, em relação a outras codificações e Unicode. No caso do UTF8 por exemplo, enquanto Ansi e OEM usam 2 bytes nos caracteres especiais, o UTF8 usa 4 bytes.

Para passar um DBF em OEM para UTF8 (não use se o DBF for Ansi), você pode usar o exemplo abaixo. Faça cópia do DBF antes, ok?:
Function Main()
Local x, cArquivoDBF := "Nome do arquivo DBF"

Private cCampo, cConteudo

Use ( cArquivoDBF ) Exclusive New

Clear Screen

While !Eof()

  @ 10, 25 Say "Convertendo Registro => " + Str( RecN() )

  For x=1 To FCount()

   cCampo := Field( x )

   If ValType( &cCampo. ) = "C"
    cConteudo := Hb_StrToUTF8( &cCampo. )
    Replace &cCampo. With cConteudo  // salva o campo
   EndIf

  Next

  Skip

EndDo

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: 2440
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 294 vezes
Mens.Curtidas: 264 vezes




Retornar para SQL

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


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
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro