IMPORTAR .TXT PARA MYSQL

ARES 06/03/2011 18:52:17
#367419
Amigos boa noite,

Vocês sabem uma rotina para importar dados tipo txt para o mysql.

Desde já agradeço,

PS: Bom carnaval para todos.
MAXCIM 07/03/2011 10:57:05
#367447
qualquer front-end conectado ao mysql tem ferramentas de importação e converção.
basta apenas selecionar o aquivo, definir colunas e importar...
ARES 07/03/2011 13:20:56
#367456
maxcim, boa tarde!

Obrigado pela resposta.

estava usando o seguinte código para a importação para o access:


Sub ParseToArray(sLine As String, A() As String)

Dim P As Long, LastPos As Long, i As Long

P = InStr(sLine, [Ô];[Ô])

Do While P
A(i) = Mid$(sLine, LastPos + 1, P - LastPos - 1)
LastPos = P
i = i + 1
P = InStr(LastPos + 1, sLine, [Ô];[Ô], vbBinaryCompare)
Loop

End Sub

Private Sub cliente()
Dim F As Long, sLine As String, A(0 To 7) As String
Dim x As Integer
[ô]On Error GoTo trata_erro
[ô]localiza o caminho da arquivo .txt para importar para a tabela
Me.text1 = [Ô]C:\ASGARD\export\[Ô] & frminicial.StatusBar1.Panels(2).Text & [Ô]\clientes.txt[Ô]

[ô]inicia a conexão com o banco de dados


mycon.Open [Ô]dsn=est1112[Ô]

[ô] mycon.ConnectionString = [Ô]provider=microsoft.jet.oledb.4.0;[Ô] & [Ô] data source=[Ô] & App.Path & [Ô]\db001\bc001.mdb[Ô]
[ô] mycon.Open

[ô]verifica os dados dentro da .txt
F = FreeFile

[ô]abre a .txt e inicia um loop para o número de linhas dentro do arquivo
Open text1.Text For Input As F

[ô]inicia o processo de transferencia dos dados
With mycmd
Set .ActiveConnection = mycon
.CommandType = adCmdText

[ô]limpa os dados da tabela
[ô] .CommandText = [Ô]drop table cliente[Ô]

[ô] On Error Resume Next

[ô]passa os parametros do loop para adicionar os dados na tabela cliente
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
Me.lblprogress = [Ô]Atualizando clientes[Ô]
pb.Visible = True
pb.Min = 0
pb.Max = F
pb.Value = 0
For x = pb.Min To pb.Max
pb.Value = x
DoEvents
Next x
[ô]insere os dados do array na tabela clientes
.CommandText = [Ô]insert into cliente_asgard [Ô] & [Ô] (codigo, nome, endereco, bairro, cidade, uf, cep, fone) values ([ô][Ô] & Val(A(0)) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(1) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(2) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(3) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(4) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(5) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(6) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(7) & [Ô][ô])[Ô]

.Execute


[ô]finaliza o loop
Loop

Me.pb.Visible = False
Me.lblprogress = [Ô][Ô]
End With

MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]


Set mycmd = Nothing
mycon.Close

Close #F


[ô]exclui o arquivo .txt da pasta
[ô]Kill [Ô]C:\asgard\export\[Ô] & frminicial.StatusBar1.Panels(2).Text & [Ô]\clientes.txt[Ô]

Exit Sub
trata_erro:

MsgBox [Ô]Ocorreu o erro ==> [Ô] & Err.Description

End Sub

Entretanto, esta ocorrendo um erro nessa linha:
A(i) = Mid$(sLine, LastPos + 1, P - LastPos - 1)

justamente na hora de pegar os dados e as colunas.

Att
HIDDEN 07/03/2011 21:58:21
#367490
Qual o erro ?
ARES 08/03/2011 09:16:50
#367512
Hidden, obrigado pela resposta!

O erro está ocorrendo exatamente aki A(i), com a seguinte mensagem: Subscript out of range

Desde já agradeço
ARES 11/03/2011 10:02:25
#367746
alguem.
LUIZCOMINO 11/03/2011 12:54:33
#367770
Amigo eu acho que o erro é pq vc não definiuo range da Array A tenta assim:
---------------------------

Sub ParseToArray(sLine As String, A() As String)

Dim P As Long, LastPos As Long, i As Long

P = InStr(sLine, [Ô];[Ô])

Do While P

If i= 1 or i=0 Then ReDim A(1) Else ReDim Preserve A(i)

A(i) = Mid$(sLine, LastPos + 1, P - LastPos - 1)
LastPos = P
i = i + 1
P = InStr(LastPos + 1, sLine, [Ô];[Ô], vbBinaryCompare)
Loop

End Sub

Private Sub cliente()
Dim F As Long, sLine As String, A(0 To 7) As String
Dim x As Integer
[ô]On Error GoTo trata_erro
[ô]localiza o caminho da arquivo .txt para importar para a tabela
Me.text1 = [Ô]C:\ASGARD\export\[Ô] & frminicial.StatusBar1.Panels(2).Text & [Ô]\clientes.txt[Ô]

[ô]inicia a conexão com o banco de dados


mycon.Open [Ô]dsn=est1112[Ô]

[ô] mycon.ConnectionString = [Ô]provider=microsoft.jet.oledb.4.0;[Ô] & [Ô] data source=[Ô] & App.Path & [Ô]\db001\bc001.mdb[Ô]
[ô] mycon.Open

[ô]verifica os dados dentro da .txt
F = FreeFile

[ô]abre a .txt e inicia um loop para o número de linhas dentro do arquivo
Open text1.Text For Input As F

[ô]inicia o processo de transferencia dos dados
With mycmd
Set .ActiveConnection = mycon
.CommandType = adCmdText

[ô]limpa os dados da tabela
[ô] .CommandText = [Ô]drop table cliente[Ô]

[ô] On Error Resume Next

[ô]passa os parametros do loop para adicionar os dados na tabela cliente
Do While Not EOF(F)
Line Input #F, sLine
ParseToArray sLine, A()
Me.lblprogress = [Ô]Atualizando clientes[Ô]
pb.Visible = True
pb.Min = 0
pb.Max = F
pb.Value = 0
For x = pb.Min To pb.Max
pb.Value = x
DoEvents
Next x
[ô]insere os dados do array na tabela clientes
.CommandText = [Ô]insert into cliente_asgard [Ô] & [Ô] (codigo, nome, endereco, bairro, cidade, uf, cep, fone) values ([ô][Ô] & Val(A(0)) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(1) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(2) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(3) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(4) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(5) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(6) & [Ô][ô],[Ô] & [Ô][ô][Ô] & _
A(7) & [Ô][ô])[Ô]

.Execute


[ô]finaliza o loop
Loop

Me.pb.Visible = False
Me.lblprogress = [Ô][Ô]
End With

MsgBox [Ô]Arquivo texto importado com sucesso !! [Ô]


Set mycmd = Nothing
mycon.Close

Close #F


[ô]exclui o arquivo .txt da pasta
[ô]Kill [Ô]C:\asgard\export\[Ô] & frminicial.StatusBar1.Panels(2).Text & [Ô]\clientes.txt[Ô]

Exit Sub
trata_erro:

MsgBox [Ô]Ocorreu o erro ==> [Ô] & Err.Description

End Sub
LUIZCOMINO 11/03/2011 12:57:36
#367771
Resposta escolhida
amigo troque essa parte

--------------------------------
Do While P

If i= 1 or i=0 Then ReDim A(1) Else ReDim Preserve A(i)

A(i) = Mid$(sLine, LastPos + 1, P - LastPos - 1)
LastPos = P
i = i + 1
P = InStr(LastPos + 1, sLine, [Ô];[Ô], vbBinaryCompare)
Loop
----------------------
por está


Do While P

if i=0 then i=1
If i= 1 Then ReDim A(1) Else ReDim Preserve A(i)

A(i) = Mid$(sLine, LastPos + 1, P - LastPos - 1)
LastPos = P
i = i + 1
P = InStr(LastPos + 1, sLine, [Ô];[Ô], vbBinaryCompare)
Loop
ARES 11/03/2011 13:42:08
#367774
Luizcomino, obrigado pela resposta!

Entretanto, esta me retornando o seguinte erro:

Essa matriz é fixa ou está temporariamente bloqueada.

nesse ponto do código: If i = 1 Then [txt-color=#e80000]ReDim A(1[/txt-color]) Else ReDim Preserve A(i)

Att
LUIZCOMINO 11/03/2011 14:56:43
#367794
mude para
If i = 1 Then ReDim A(1 to 1) Else ReDim Preserve A(1 to i)
Página 1 de 2 [17 registro(s)]
Tópico encerrado , respostas não são mais permitidas