Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Yaridovich

TXT para Access?

Recommended Posts

E ai povo da iMasters, tudo bom?

 

Seguinte, tô com uma dúvida aqui que tenho certeza que vocês podem sanar.

 

Acabaram de me pedir aqui no estágio pra ver se existe algum jeito de converter um arquivo TXT em um banco de dados Access. Pesquisando no Google, achei um tópico aqui da iMasters de um outro usuário com uma dúvida parecida, porém, pelo que entendi, o layout do arquivo txt dele era diferente do que tenho aqui.

 

No arquivo que possui aqui, não há espaços e nem tabulações, os dados de cada linha estão divididos por ponto-e-virgula e o conteúdo de cada campo da linha está entre aspas. Como no exemplo abaixo:

 

"FULANO DE TAL";"25";"RIO DE JANEIRO";"RJ"; [...]

 

Nesse estilo.

 

Alguém sabe de algum jeito com o qual eu poderia fazer a conversão? Qualquer jeito é válido.

 

Agradeço desde já!

 

Atenciosamente,

 

Lucas / Yari

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hmmm interessante...

 

Alguma idéia de como eu poderia fazer isso no ASP? Pensei aqui em fazer uma função que separa os dados toda vez que encontra um ponto-e-virgula e remove as aspas, mas não sei ao certo como ficaria na prática.

Compartilhar este post


Link para o post
Compartilhar em outros sites

existem varios code para manupulacao de strings e txt, pode te ajudar acesse o lab. de scripts

Compartilhar este post


Link para o post
Compartilhar em outros sites

kker coisa , posta ae...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Yaridovich, acho q tem 1 jeito bem mais simples..

 

tente isso:

 

1. abra 1 banco de dados no acess;

 

2. acione arquivo - abrir e nos tipos de arquivos selecione "arquivos de texto"; selecione o arquivo txt

 

3. vai se abrir 1 tela; so d 1 olhada c as colunas estão ok; clique em avançar - concluir.. o arquivo de texto vira 1 tabela.. ahe é só acrescentar os nomes das colunas..

 

Fonte - atenção no trecho q explica sobre as aspas e os delimitadores (ponto e virgulas):

http://office.microsoft.com/pt-br/access/HA012322271046.aspx

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 02/12/2009 at 01:19, 'Fernando C' disse:

Yaridovich, acho q tem 1 jeito bem mais simples..

 

tente isso:

 

1. abra 1 banco de dados no acess;

 

2. acione arquivo - abrir e nos tipos de arquivos selecione "arquivos de texto"; selecione o arquivo txt

 

3. vai se abrir 1 tela; so d 1 olhada c as colunas estão ok; clique em avançar - concluir.. o arquivo de texto vira 1 tabela.. ahe é só acrescentar os nomes das colunas..

 

Fonte - atenção no trecho q explica sobre as aspas e os delimitadores (ponto e virgulas):

http://office.microsoft.com/pt-br/access/HA012322271046.aspx

 

Valeu a ajuda cara, mas eu tava fazendo isso como um favor pra uma colega de trabalho e ela já conseguiu, heheh.

De qualquer maneira, testei o que você falou e funcionou, valeuzão!

 

E só uma última ajudinha, na verdade não é ajuda, é só um apoio.

 

Supondo que eu tivesse que fazer isso que eu pedi no tópico no próprio ASP, sem fazer isso no Access... Vejam se minha lógica está correta:

1. Lê a linha até encontrar um ponto-e-virgula e grava o que foi encontrado até então em uma string;

2. Remove as aspas à esquerda e à direita desta string;

3. Grava esta string em um array;

4. Continua após o ponto-e-virgula, repetindo os passos 1, 2 e 3;

5. Ao alcançar o fim da linha, imprime o array em formato de tabela e passa para a próxima linha, repetindo os passos anteriores.

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

le o arquivo, dá um realline dá um split no ponto-e-virgula e grava o que foi encontrado

Grava em um array, dá um replace nas aspas;alcançar o fim da linha, imprime o array em formato de tabela e passa para a próxima linha, repetindo os passos anteriores.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 03/12/2009 at 20:15, 'xanburzum' disse:

le o arquivo, dá um realline dá um split no ponto-e-virgula e grava o que foi encontrado

Grava em um array, dá um replace nas aspas;alcançar o fim da linha, imprime o array em formato de tabela e passa para a próxima linha, repetindo os passos anteriores.

 

Valeu cara, mas fiquei com algumas dúvidas... Tô trabalhando com ASP há pouco tempo, então já viu né heheh

 

Esse realline faz o que? E como faria o split no ponto-e-virgula?

 

Abraços! (e mal a demora pra responder!)

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá uma pesquisada no lab. k existem varios tópicos de como manipular FSO, e um você pode tirar suas duvidas

 

olha este exemplo

 

<%
Dim Conexao
Set Conexao = Server.CreateObject("ADODB.Connection")
Conexao.Open "dbq="&Server.MapPath("banco2.mdb")&";driver={Microsoft Access Driver (*.mdb)}"

'Antes de criarmos o FSO, iremos exibir uma imagem de envio
'Somente para ilustrar pois dependendo do arquivo o processo pode ser demorado
'response.write "<img src='inserindo.gif'>"

Dim objFSO

'Aqui que daremos início ao sistema
'Criaremos o objeto FileSystemObject
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")

Dim varArquivo

'Agora, com o uso do FSO, iremos abrir o arquivo texto que iremos criar
Set varArquivo = objFSO.OpenTextFile(server.MapPath("salario.txt"), 1)

dim arrayLinha

'Agora que o arquivo já foi aberto, iremos ler linha por linha
'O comando AtEndOfStream determina que iremos repetir o processo abaixo
'até o fim do arquivo
Do while not varArquivo.AtEndOfStream

'Abaixo, criaremos um array para separar os dados entre ponto-e-vírgula
'ReadLine é usado para indicar que iremos separar os dados desta linha
arrayLinha=split(varArquivo.ReadLine,";",-1,1)

'Aqui faço uma select na tabela funcionario, necessariamente no campo matriculafuncionario
'Para posterior comparar ao conteúdo da arrayLinha(2)
dim Sqlfuncionario, rs
Sqlfuncionario = "SELECT matriculafuncionario FROM funcionario where codempresa='"&arraylinha(1)&"' and (matriculafuncionario='"&arraylinha(2)&"') and (competencia= "&arraylinha(5)&")"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 2
rs.CursorType = 1
rs.LockType = 2
rs.open Sqlfuncionario, Conexao

If not rs.EOF then
'Response.Write Sqlfuncionario


Dim atualiza, atualizado, novo
atualiza= "update funcionario set salariobase='"&arraylinha(3)&"', salariobruto='"&arraylinha(4)&"' where codempresa='"&arraylinha(1)&"' and (matriculafuncionario= '"&arraylinha(2)&"') and (competencia= "&arraylinha(5)&")"
set rsquery = Conexao.execute(atualiza) 
 'aqui deve inserir a linha de UPDATE 17/10/2009
atualizado= (atualizado+1)
else

'Com o array criado, iremos inserir de acordo com a ordem dos campos
'Usando 'arrayLinha(0)' nós determinamos cada dado pela ordem do arquivo de texto
'começando pelo zero que é respectivamente o campo nome e por ai adiante
conexao.execute "INSERT INTO funcionario (codempresa, matriculafuncionario, salariobase, salariobruto, competencia) VALUES ('"&arrayLinha(1)&"','"&arrayLinha(2)&"','"&arrayLinha(3)&"','"&arrayLinha(4)&"','"&arrayLinha(5)&"')"
novo= (novo+1)
End If
'Passar para próxima linha
loop

'Destruiremos e fecharemos o FSO e o acesso ao arquivo de texto
varArquivo.Close
Set varArquivo = Nothing
Set objFSO = Nothing

'Destruiremos e fecharemos a conexão com o banco de dados
Conexao.close
Set Conexao = nothing
set rsquery = nothing

'Abaixo trago o resultado da importação: quantidade de registros atualizados e quantidade de novos registros
response.Write"Total de registros atualizados:"&Atualizado&"<br>"
response.Write"Total de registros novos:"&novo

'Abaixo, caso a ordem ou a quantidade de campos do arquivo de texto
'seja inferior a do banco de dados, retornaremos uma mensagem de erro
if err>0 then
response.write "<script>history.back(1);alert('Ocorreu algum problema na inserção.\nVerifique o layout do arquivo de texto.')</script>"
response.End()
end if
 
%> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

beleza, dá uma analisada no code, k você consegue...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.