Ir para conteúdo

POWERED BY:

Arquivado

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

feasso

Ler TXT e salvar em banco de dados

Recommended Posts

Preciso ler um txt com o seguinte formato:

10000419;17/02/10 12:00;KATIA REIGADO                        ;0 - ÑConfirmado    ;001 - Venda Casa                  ;127.791.768-02
10000407;18/01/10 09:40;Cristina Savariego Porto             ;3 - Comprado       ;003 - INGRID OLIVEIRA MOR         ;086.332.928-41

Os dados são: PEDIDO; DATA E HORA; NOME CLIENTE; STATUS; VENDEDOR; CPF.

 

Como eu faço para ler este arquivo e ir salvado cada valor em uma váriavel ou montar um array para depois salvar em banco ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

existe um tópico recente sobre isso, dê uma pesquisada irá te ajudar

Compartilhar este post


Link para o post
Compartilhar em outros sites

Xanbrurzum,

 

Tentei usar o exemplo do outro Fórum, mas esta dando erro.

 

O arquivo .asp e o txt estão na mesma pasta, mas dá erro dizendo que o arquivo (.txt) não foi encontrado.

 

set fs = Server.CreateObject("Scripting.FileSystemObject") 

 Set objFile = fs.GetFile("teste.txt") 

Erro de tempo de execução do Microsoft VBScript (0x800A0035)

Arquivo não encontrado

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui arrumar o caminho, mas agora da erro na hora de ler o conteúdo do .txt

Set objFileTextStream = objFile.OpenAsTextStream(1, 2)

Diz que: O objeto não dá suporte para a propriedade ou método: 'objFile.OpenAsTextStream'

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu tenho um código prontinho que lê um txt que´tem os dados separados por (;), aramazena dentro de uma matriz,

e antes de gravar no banco, verifica se já existe... Se existir no banco, dpa um Update, se não, faz um Insert.

 

Veja se serve para você:

 

 

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


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("servidor.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)
If arraylinha(15)="" then
dim matriculazerada
conexao.execute "INSERT INTO titularsemmatricula (nome, cidade, uf, endereco, cep, bairro, data_nascimento, cpf, rg, codestadocivil, pai, mae, naturalidade, nacionalidade, matricula, codentidade) VALUES   ('"&replace(arrayLinha(1),"'","")&"', '"&replace(arrayLinha(2),"'","")&"', '"&replace(arrayLinha(3),"'","")&"', '"&replace(arrayLinha(4),"'","")&"', '"&replace(arrayLinha(5),"'","")&"', '"&replace(arrayLinha(6),"'","")&"', '"&replace(arrayLinha(7),"'","")&"', '"&replace(arrayLinha(8),"'","")&"', '"&replace(arrayLinha(9),"'","")&"', "&replace(arrayLinha(10),"'","")&", '"&replace(arrayLinha(11),"'","")&"', '"&replace(arrayLinha(12),"'","")&"', '"&replace(arrayLinha(13),"'","")&"', '"&replace(arrayLinha(14),"'","")&"', '"&replace(arrayLinha(15),"'","")&"', "&replace(arrayLinha(16),"'","")&")"
matriculazerada= (matriculazerada+1)



ELSE

dim Sqlfuncionario, rs
Sqlfuncionario = "SELECT * FROM titular where codentidade="&arraylinha(16)&" and (matricula='"&arraylinha(15)&"')"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.CursorLocation = 2
rs.CursorType = 1
rs.LockType = 2
rs.open Sqlfuncionario, Conexao

If not rs.EOF then

Dim atualiza, atualizado, novo, gravado
atualiza= "update titular set nome='"&replace(arrayLinha(1),"'","")&"', cidade='"&replace(arrayLinha(2),"'","")&"', uf='"&replace(arrayLinha(3),"'","")&"', endereco='"&replace(arrayLinha(4),"'","")&"', cep='"&replace(arrayLinha(5),"'","")&"', bairro='"&replace(arrayLinha(6),"'","")&"', data_nascimento='"&replace(arrayLinha(7),"'","")&"', cpf='"&replace(arrayLinha(8),"'","")&"', rg='"&replace(arrayLinha(9),"'","")&"', codestadocivil="&replace(arrayLinha(10),"'","")&", pai='"&replace(arrayLinha(11),"'","")&"', mae='"&replace(arrayLinha(12),"'","")&"', naturalidade='"&replace(arrayLinha(13),"'","")&"', nacionalidade='"&replace(arrayLinha(14),"'","")&"', matricula='"&replace(arrayLinha(15),"'","")&"', codentidade="&replace(arrayLinha(16),"'","")&" where (codentidade="&arraylinha(16)&") and (matricula='"&arraylinha(15)&"')"
set rsquery = Conexao.execute(atualiza) 

'******INÍCIO: - o verdadeiro comando de update deverá ser neste formato:
'Dim atualiza
'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) 
'****** FIM********







 'contabilizo o que foi atualizado
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 titular (nome, cidade, uf, endereco, cep, bairro, data_nascimento, cpf, rg, codestadocivil, pai, mae, naturalidade, nacionalidade, matricula, codentidade) VALUES   ('"&replace(arrayLinha(1),"'","")&"', '"&replace(arrayLinha(2),"'","")&"', '"&replace(arrayLinha(3),"'","")&"', '"&replace(arrayLinha(4),"'","")&"', '"&replace(arrayLinha(5),"'","")&"', '"&replace(arrayLinha(6),"'","")&"', '"&replace(arrayLinha(7),"'","")&"', '"&replace(arrayLinha(8),"'","")&"', '"&replace(arrayLinha(9),"'","")&"', "&replace(arrayLinha(10),"'","")&", '"&replace(arrayLinha(11),"'","")&"', '"&replace(arrayLinha(12),"'","")&"', '"&replace(arrayLinha(13),"'","")&"', '"&replace(arrayLinha(14),"'","")&"', '"&replace(arrayLinha(15),"'","")&"', "&replace(arrayLinha(16),"'","")&")"
novo= (novo+1)
End If
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&"<br>"
response.Write"Total de Matrículas Zeradas:"&matriculazerada&"<br>"



'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

cara tive um problem igual,

vou postar uma possível solução:

 

'Define o caminho do arquivo
Dim arq
arq = "D:\Sce\Precos.txt"

'Cria objeto
set objFSO = createObject("Scripting.FileSystemObject")

'Abre o arquivo que você especificou em arq
Set arqObj = objFSO.OpenTextFile(arq)

'Repetição até terminar de ler o arquivo
Do while not arqObj.AtEndOfStream

'Separa os dados do txt em arrays 
arrayLinha = split(arqObj.ReadLine, ";", -1, 1)

'Armazena valores
pedido = arrayLinha(0)
data = arrayLinha(1)
nome = arrayLinha(2)
stat = arrayLinha(3)
vendedor = arrayLinha(4)
cpf = arrayLinha(5)

'faz o loop
loop

Cara eu axo que isso vai t ajuda, so falta mesmo a conexao com o banco e o insert

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.