Importar DBF para SQL Server 2008

716 views
Skip to first unread message

Ricardo J. A. da Rocha

unread,
Jul 6, 2011, 3:59:19 PM7/6/11
to DotNet Brasil
Galera,

Preciso converter uma série de arquivos DBF para o Sql Server. A idéia
inicial foi colocar todos arquivos em um diretório, ler este diretório
e percorrer os arquivos, importando um a um.

O código de importação (neste caso, leitura, pois coloco num data
grid):
const string stringConexaoOLE = @"Provider=Microsoft.Jet.OLEDB.
4.0;Data Source=F:\DBF\DBF;Extended Properties=dBASE IV;";

using ( var oConn = new OleDbConnection
{
ConnectionString = stringConexaoOLE
} )
{

oConn.Open();
var oCmd = oConn.CreateCommand();

oCmd.CommandText = @"SELECT * FROM F:\DBF\DBF\CALUNOS.DBF";

var dt = new DataTable();
var dr = oCmd.ExecuteReader();
if ( dr != null )
{
dt.Load(dr);
dgvDados.DataSource = dt;
}
oConn.Close();
}

Tenho este código, que "aponta" para o diretório aonde os arquivos DBF
estão. Se o arquivo é pequeno, alguns Kb, funciona legal, se o
arquivo é grande, dá erro.

ERRO:
{"A tabela externa não está no formato esperado."}

Alguém já precisou fazer algo similar ???
Eu poderia fazer via importador DTS, mas são MUITOS arquivos ... por
isso preciso de algo "dinâmico".

[]'s

Ricardo J. A. da Rocha
Porto Alegre - RS

Everton Pacheco

unread,
Jul 6, 2011, 9:31:00 PM7/6/11
to dotn...@googlegroups.com
Você pode fazer com integration services de maneira dinamica. Apontando um diretorio, como nesse exemplo:


Boa sorte e abraços,

Everton Pacheco
Analista de Sistemas para Internet - UNIFACS
Pós Graduando em Banco de Dados com Ênfase em Alta Disponibilidade - UNIFACS
Fone: (71) 9961-3442
Twitter: @evertonS3





--
==============================
Comunidade de desenvolvedores Dot Net no Brasil

WebSite: www.dotnetbr.com

E-mail do Grupo: dotn...@googlegroups.com
==============================

Ricardo J. A. da Rocha

unread,
Jul 7, 2011, 10:26:03 AM7/7/11
to DotNet Brasil
Muito interessante .... gostei mesmo !!!
Vou testar !!!

Obrigado

[]'s

Ricardo J. A. da Rocha


On 6 jul, 22:31, Everton Pacheco <evertonpacheco...@gmail.com> wrote:
> Você pode fazer com integration services de maneira dinamica. Apontando um
> diretorio, como nesse exemplo:
>
> http://my.opera.com/gilmaro/blog/2011/03/01/importar-varios-arquivos-...
>
> <http://my.opera.com/gilmaro/blog/2011/03/01/importar-varios-arquivos-...>Boa
> sorte e abraços,
>
> *Everton Pacheco
> Analista de Sistemas para Internet - UNIFACS*
> *Pós Graduando em Banco de Dados com Ênfase em Alta Disponibilidade -
> UNIFACS
> Fone: (71) 9961-3442*
> *E-mail: evertonpacheco...@gmail.com*
> * <evertonpacheco...@gmail.com>Twitter: @evertonS3
>
> *
>
> Em 6 de julho de 2011 16:59, Ricardo J. A. da Rocha <
> ricardorocha....@gmail.com> escreveu:

Alex Barreto

unread,
Jul 7, 2011, 10:27:27 AM7/7/11
to dotn...@googlegroups.com
Tem certeza que é DBF?
Pergunto porque tive esse problema mas foi com o Paradox que é 'DB' a extensão, e só consegui resolver depois que instalei na máquina onde vai ser feita a carga o BDE (Borland Desktop Engine) e olha , levei uma surra até conseguir!

Att,
Alex Barreto.

Alex Barreto

unread,
Jul 7, 2011, 10:31:40 AM7/7/11
to dotn...@googlegroups.com
Segue alguns comentários:

no seu código substitua

 oCmd.CommandText = @"SELECT * FROM F:\DBF\DBF\CALUNOS.DBF";

para 

 oCmd.CommandText = @"SELECT * FROM CALUNOS";

você não deve incluir o caminho nem a extensão!

aproveite e altere o CommandType para TableDirect

Att,
Alex Barreto

Everton Pacheco

unread,
Jul 7, 2011, 10:39:09 AM7/7/11
to dotn...@googlegroups.com
Ricardo,

Se você quiser pode montar o pacote no integration e disparar ele via codigo por aplicação windows forms.

Everton Pacheco
Analista de Sistemas para Internet - UNIFACS
Pós Graduando em Banco de Dados com Ênfase em Alta Disponibilidade - UNIFACS
Fone: (71) 9961-3442
Twitter: @evertonS3

Ricardo J. A. da Rocha

unread,
Jul 7, 2011, 12:01:30 PM7/7/11
to DotNet Brasil
Sim, é DBF !!

Foi usado com o Visual Fox Pro !!!!
Já instalei até o FoxPro ... e com ele vem os "drivers" para acesso,
que no final das contas, são Oledb.

[]'s

Ricardo

On 7 jul, 11:27, Alex Barreto <alexdbarr...@gmail.com> wrote:
> Tem certeza que é DBF?
> Pergunto porque tive esse problema mas foi com o Paradox que é 'DB' a
> extensão, e só consegui resolver depois que instalei na máquina onde vai ser
> feita a carga o BDE (Borland Desktop Engine) e olha , levei uma surra até
> conseguir!
>
> Att,
> Alex Barreto.
>
> Em 6 de julho de 2011 16:59, Ricardo J. A. da Rocha <
> ricardorocha....@gmail.com> escreveu:

Ricardo J. A. da Rocha

unread,
Jul 7, 2011, 12:02:45 PM7/7/11
to DotNet Brasil
Alex, vou testar com as alterações.

Sem o caminho físico eu já havia testado e continuava dando problemas,
mas não tirei a extensão.
Valeu !!

[]'s

Ricardo


On 7 jul, 11:31, Alex Barreto <alexdbarr...@gmail.com> wrote:
> Segue alguns comentários:
>
> no seu código substitua
>
>  oCmd.CommandText = @"SELECT * FROM F:\DBF\DBF\CALUNOS.DBF";
>
> para
>
>  oCmd.CommandText = @"SELECT * FROM CALUNOS";
>
> você não deve incluir o caminho nem a extensão!
>
> aproveite e altere o CommandType para TableDirect
>
> Att,
> Alex Barreto
>
> Em 7 de julho de 2011 11:27, Alex Barreto <alexdbarr...@gmail.com> escreveu:
>
>
>
>
>
>
>
> > Tem certeza que é DBF?
> > Pergunto porque tive esse problema mas foi com o Paradox que é 'DB' a
> > extensão, e só consegui resolver depois que instalei na máquina onde vai ser
> > feita a carga o BDE (Borland Desktop Engine) e olha , levei uma surra até
> > conseguir!
>
> > Att,
> > Alex Barreto.
>
> > Em 6 de julho de 2011 16:59, Ricardo J. A. da Rocha <
> > ricardorocha....@gmail.com> escreveu:

Ricardo J. A. da Rocha

unread,
Jul 7, 2011, 12:04:45 PM7/7/11
to DotNet Brasil
Muito bom ....
Mas a importação, de princípio, não precisa ter este nível de
automação ... posso rodar pela ferramenta porque é apenas para uma
carga. Uma fez isso feito, os dados serão manipulados para
normalização e relacionamento.

Vou pesquisar mais a respeito ... acho que esta será a solução.

[]'s

Ricardo

On 7 jul, 11:39, Everton Pacheco <evertonpacheco...@gmail.com> wrote:
> Ricardo,
>
> Se você quiser pode montar o pacote no integration e disparar ele via codigo
> por aplicação windows forms.
> *Everton Pacheco
> Analista de Sistemas para Internet - UNIFACS*
> *Pós Graduando em Banco de Dados com Ênfase em Alta Disponibilidade -
> UNIFACS
> Fone: (71) 9961-3442*
> *E-mail: evertonpacheco...@gmail.com*
> * <evertonpacheco...@gmail.com>Twitter: @evertonS3
>
> *
>
> Em 7 de julho de 2011 11:31, Alex Barreto <alexdbarr...@gmail.com> escreveu:
>
>
>
>
>
>
>
> > Segue alguns comentários:
>
> > no seu código substitua
>
> >  oCmd.CommandText = @"SELECT * FROM F:\DBF\DBF\CALUNOS.DBF";
>
> > para
>
> >  oCmd.CommandText = @"SELECT * FROM CALUNOS";
>
> > você não deve incluir o caminho nem a extensão!
>
> > aproveite e altere o CommandType para TableDirect
>
> > Att,
> > Alex Barreto
>
> >  Em 7 de julho de 2011 11:27, Alex Barreto <alexdbarr...@gmail.com>escreveu:
>
> > Tem certeza que é DBF?
> >> Pergunto porque tive esse problema mas foi com o Paradox que é 'DB' a
> >> extensão, e só consegui resolver depois que instalei na máquina onde vai ser
> >> feita a carga o BDE (Borland Desktop Engine) e olha , levei uma surra até
> >> conseguir!
>
> >> Att,
> >> Alex Barreto.
>
> >> Em 6 de julho de 2011 16:59, Ricardo J. A. da Rocha <
> >> ricardorocha....@gmail.com> escreveu:
Reply all
Reply to author
Forward
0 new messages