Ir para conteúdo

POWERED BY:

Arquivado

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

mvca

Como inserir mais de 10.000 registros no mysql?

Recommended Posts

Como inserir mais de 10.000 registros no mysql?

 

Faco upload de um arquivo TXT, onde contem os mais de 10.000 registros.

 

Gostaria de inserir ele fazendo uma leitura no arquivo txt, ate consigo 800 registro, mas o resto sempre da pau!!!

 

O q eu faco, me ajudem por favor!!!!

 

script atua q consegue ate 800 registros:

 

<%

Set objConexao = Server.CreateObject("ADODB.Connection")

 

objConexao.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;database=4em1;uid=admin;pwd=admin;"

 

stringSQL = "DELETE FROM 4em1.4em1_dismopel_clientes"

 

 

SET objRecordSet = objConexao.Execute(stringSQL)

SET objRecordSet = nothing

%>

<%

Set O_FSO = Server.CreateObject("Scripting.FileSystemObject") 'Cria o Objeto

 

Set O_FSO_File = O_FSO.OpenTextFile(Server.MapPath("sist.txt"), 1) 'Abre o arquivo para leitura

 

Ver_Base = O_FSO_File.Readall 'Lê todo o conteúdo do arquivo

 

Set O_FSO_File = Nothing 'Destrói o objeto

 

Set O_FSO = Nothing 'Destrói o objeto

 

Ver_Base = Replace(Ver_Base,Chr(10),"") 'Aqui estou retirando um caractere "invisivel" mas que pode atrapalhar nossa divisão de CPF e Nome

 

mt = Split(Ver_Base,Chr(13)) 'Criando a Matriz

 

ReDim campo1(UBound(mt)) 'Criando uma matriz para os CNPJ

ReDim campo2(UBound(mt)) 'Criando uma matriz para os RAZÃO SOCIAL

ReDim campo3(UBound(mt)) 'Criando uma matriz para os SITUAÇÃO ATUAL

ReDim campo4(UBound(mt)) 'Criando uma matriz para os TIPO DE COBRANÇA

ReDim campo5(UBound(mt)) 'Criando uma matriz para os LIMITE DE CRÉDITO

ReDim campo6(UBound(mt)) 'Criando uma matriz para os MÉDIA DE ATRASO

ReDim campo7(UBound(mt)) 'Criando uma matriz para os DATA DO CADASTRO

ReDim campo8(UBound(mt)) 'Criando uma matriz para os DATA DO ÚLTIMO FATURTO

ReDim campo9(UBound(mt)) 'Criando uma matriz para os DATA DO MAIOR ACUMULO

ReDim campo10(UBound(mt)) 'Criando uma matriz para os VALOR DO ÚLTIMO FATURTO -->> Avisaram que os campos de valor tem 08 caracteres porque tem os 2 dígitos depois da vírgula ex: 350,00 (mas o sistema não conta a vírgula)!

ReDim campo11(UBound(mt)) 'Criando uma matriz para os VALOR MAIOR ACÚMULO

ReDim campo12(UBound(mt)) 'Criando uma matriz para os VALOR DO ACÚMULO ATUAL

ReDim campo13(UBound(mt)) 'Criando uma matriz para os PAGAMENTO DE JUROS

ReDim campo14(UBound(mt)) 'Criando uma matriz para os PAGAMENTO EM CARTÓRIO

ReDim campo15(UBound(mt)) 'Criando uma matriz para os VALOR TOTAL A VENCER

ReDim campo16(UBound(mt)) 'Criando uma matriz para os VALOR ATRASO ATÉ 15D

ReDim campo17(UBound(mt)) 'Criando uma matriz para os VALOR ATRASO DE 16 À 30D

ReDim campo18(UBound(mt)) 'Criando uma matriz para os VALOR ATRASO MAIS DE 30D

 

'1. (014). CNPJ

'2. (040). RAZÃO SOCIAL

'3. (030). SITUAÇÃO ATUAL

'4. (040). TIPO DE COBRANÇA

'5. (007). LIMITE DE CRÉDITO

'6. (004). MÉDIA DE ATRASO

'7. (008). DATA DO CADASTRO

'8. (008). DATA DO ÚLTIMO FATURTO

'9. (008). DATA DO MAIOR ACUMULO

'10. (008). VALOR DO ÚLTIMO FATURTO -->> Avisaram que os campos de valor tem 08 caracteres porque tem os 2 dígitos depois da vírgula ex: 350,00 (mas o sistema não conta a vírgula)!

'11. (008). VALOR MAIOR ACÚMULO

'12. (008). VALOR DO ACÚMULO ATUAL

'13. (003). PAGAMENTO DE JUROS

'14. (003). PAGAMENTO EM CARTÓRIO

'15. (008). VALOR TOTAL A VENCER

'16. (008). VALOR ATRASO ATÉ 15D

'17. (008). VALOR ATRASO DE 16 À 30D

'18. (008). VALOR ATRASO MAIS DE 30D

 

 

For x = 0 To UBound(mt)

 

campo1(x) = Left(mt(x),14) 'Criando uma matriz para os CNPJ

campo2(x) = Mid(mt(x),15,40) 'Criando uma matriz para os RAZÃO SOCIAL

campo3(x) = Mid(mt(x),55,30) 'Criando uma matriz para os SITUAÇÃO ATUAL

campo4(x) = Mid(mt(x),85,40) 'Criando uma matriz para os TIPO DE COBRANÇA

campo5(x) = Mid(mt(x),125,7) 'Criando uma matriz para os LIMITE DE CRÉDITO

campo6(x) = Mid(mt(x),132,4) 'Criando uma matriz para os MÉDIA DE ATRASO

campo7(x) = Mid(mt(x),136,8) 'Criando uma matriz para os DATA DO CADASTRO

campo8(x) = Mid(mt(x),144,8) 'Criando uma matriz para os DATA DO ÚLTIMO FATURTO

campo9(x) = Mid(mt(x),152,8) 'Criando uma matriz para os DATA DO MAIOR ACUMULO

campo10(x) = Mid(mt(x),160,8) 'Criando uma matriz para os VALOR DO ÚLTIMO FATURTO -->> Avisaram que os campos de valor tem 08 caracteres porque tem os 2 dígitos depois da vírgula ex: 350,00 (mas o sistema não conta a vírgula)!

campo11(x) = Mid(mt(x),168,8) 'Criando uma matriz para os VALOR MAIOR ACÚMULO

campo12(x) = Mid(mt(x),176,8) 'Criando uma matriz para os VALOR DO ACÚMULO ATUAL

campo13(x) = Mid(mt(x),184,3) 'Criando uma matriz para os PAGAMENTO DE JUROS

campo14(x) = Mid(mt(x),187,3) 'Criando uma matriz para os PAGAMENTO EM CARTÓRIO

campo15(x) = Mid(mt(x),190,8) 'Criando uma matriz para os VALOR TOTAL A VENCER

campo16(x) = Mid(mt(x),198,8) 'Criando uma matriz para os VALOR ATRASO ATÉ 15D

campo17(x) = Mid(mt(x),206,8) 'Criando uma matriz para os VALOR ATRASO DE 16 À 30D

campo18(x) = Mid(mt(x),214,8) 'Criando uma matriz para os VALOR ATRASO MAIS DE 30D

 

Set objConexao = Server.CreateObject("ADODB.Connection")

 

objConexao.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;database=4em1;uid=admin;pwd=admin;"

 

stringSQL = "INSERT INTO 4em1.4em1_dismopel_clientes (cnpj, razao_social, situacao_atual, tipo_cobranca, limite_credito, media_atraso, data_cadastro, data_ultima, data_maior, valor_ultima, valor_maior, valor_atual, pagamento_juro, pagamento_cartorio, valor_vencer, valor_atraso_15, valor_atraso_16_30, valor_atraso_30) VALUES ('"& campo1(x) &"', '"& campo2(x) &"', '"& campo3(x) &"', '"&campo4(x) &"', '"& campo5(x) &"', '"& campo6(x) &"', '"& campo7(x) &"', '"& campo8(x) &"', '"& campo9(x) &"', '"& campo10(x) &"', '"& campo11(x) &"', '"& campo12(x) &"', '"& campo13(x) &"', '"& campo14(x) &"', '"& campo15(x) &"', '"& campo16(x) &"', '"& campo17(x) &"', '"& campo18(x) &"')"

 

 

SET objRecordSet = objConexao.Execute(stringSQL)

SET objRecordSet = nothing

 

 

Next

response.redirect "res_cad.asp"

%>

 

Obrigado a atencao

 

Marcus

Compartilhar este post


Link para o post
Compartilhar em outros sites

que erro dá??? timeout???

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que não diz o erro especifico!!!Só diz erro interno no servidor 500.tem como eu fazer esse laco "for" pegar so 500 registros, ai redirecionar pra outro arquivo q pega os proximos 500, ai por diante???você viu o codigo acima?? tem como fazer isso??

Compartilhar este post


Link para o post
Compartilhar em outros sites

desabilita as mensagnes de http amigaveis em seu navegador primeiro

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse é o erro q ta dando direto quando tem acima de 500 registros(ou linhas)Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error. More information about this error may be available in the server error log.JA FIZ ISSO NAO TEM JEITO SO RETORNA ESSA MENSAGEM!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, então vamos fazer o seguinte, coloque um On Error Resume Next no inicio de seu código e no final um

If Err.Number <> 0 Then
Response.Write "Número do Erro: "& Err.Number &"<br>"
Response.Write "Descrição do Erro: "& Err.description &"<br>"
Response.Write "Linha do Erro: "& Err.Line &"<br>"
End IF

Deve mostrar o erro, caso não mostre avise que vamos revisar seu código.

Compartilhar este post


Link para o post
Compartilhar em outros sites
Olá salgado, foi até você q me ajudou nesse codigo!!!
Sim eu lembro dele. Uma coisa que pode ser retirada é a criação de matriz para cada dado, não precisa de matriz alí pois você já está inserindo no banco usando o mesmo laço de repetição.

E coloque o que eu postei antes e COMENTE a linha do Response.Redirect.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como tem muitos registros nisso, é melhor você fazer de 500 em 500, ou senão sua página vai ficar 2 horas atualizando os dados e se travar você não vai saber onde parouEu aconselho você fazer o loop de 500, e quando acabar esses 500 você manda um response.redirect "pagina.asp?registro=x"No x você coloca o registro no qual ele parou, e manda a página continuar do ponto x

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como diria o TIU Mário, natal tá chegando, ai vai seu presente de papai noel:

<%
LinhasAProcessar = 500
Linha = Request("Linha")
If Linha = "" OR Not IsNumeric(Linha) Then
Linha = 0
Else
Linha = CInt(Linha)
End If
Final = Linha + LinhasAProcessar

Set objConexao = Server.CreateObject("ADODB.Connection")
objConexao.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=localhost;PORT=3306;database=4em1;uid=admin;pwd=admin;"

stringSQL = "DELETE FROM 4em1.4em1_dismopel_clientes"
objConexao.Execute(stringSQL)

Set O_FSO = Server.CreateObject("Scripting.FileSystemObject") 'Cria o Objeto
Set O_FSO_File = O_FSO.OpenTextFile(Server.MapPath("sist.txt"), 1) 'Abre o arquivo para leitura

Ver_Base = O_FSO_File.Readall 'Lê todo o conteúdo do arquivo

Set O_FSO_File = Nothing 'Destrói o objeto

Set O_FSO = Nothing 'Destrói o objeto

Ver_Base = Replace(Ver_Base,Chr(10),"") 'Aqui estou retirando um caractere "invisivel" mas que pode atrapalhar nossa divisão de CPF e Nome

mt = Split(Ver_Base,Chr(13)) 'Criando a Matriz

'1. (014). CNPJ
'2. (040). RAZÃO SOCIAL
'3. (030). SITUAÇÃO ATUAL
'4. (040). TIPO DE COBRANÇA
'5. (007). LIMITE DE CRÉDITO
'6. (004). MÉDIA DE ATRASO
'7. (008). DATA DO CADASTRO
'8. (008). DATA DO ÚLTIMO FATURTO
'9. (008). DATA DO MAIOR ACUMULO
'10. (008). VALOR DO ÚLTIMO FATURTO -->> Avisaram que os campos de valor tem 08 caracteres porque tem os 2 dígitos depois da vírgula ex: 350,00 (mas o sistema não conta a vírgula)!
'11. (008). VALOR MAIOR ACÚMULO
'12. (008). VALOR DO ACÚMULO ATUAL
'13. (003). PAGAMENTO DE JUROS
'14. (003). PAGAMENTO EM CARTÓRIO
'15. (008). VALOR TOTAL A VENCER
'16. (008). VALOR ATRASO ATÉ 15D
'17. (008). VALOR ATRASO DE 16 À 30D
'18. (008). VALOR ATRASO MAIS DE 30D

If Final > UBound(mt)
Final = UBound(mt)
End If

For x = Linha To Final

campo1 = Left(mt(x),14) 'Criando uma matriz para os CNPJ
campo2 = Mid(mt(x),15,40) 'Criando uma matriz para os RAZÃO SOCIAL
campo3 = Mid(mt(x),55,30) 'Criando uma matriz para os SITUAÇÃO ATUAL
campo4 = Mid(mt(x),85,40) 'Criando uma matriz para os TIPO DE COBRANÇA
campo5 = Mid(mt(x),125,7) 'Criando uma matriz para os LIMITE DE CRÉDITO
campo6 = Mid(mt(x),132,4) 'Criando uma matriz para os MÉDIA DE ATRASO
campo7 = Mid(mt(x),136,8) 'Criando uma matriz para os DATA DO CADASTRO
campo8 = Mid(mt(x),144,8) 'Criando uma matriz para os DATA DO ÚLTIMO FATURTO
campo9 = Mid(mt(x),152,8) 'Criando uma matriz para os DATA DO MAIOR ACUMULO
campo10 = Mid(mt(x),160,8) 'Criando uma matriz para os VALOR DO ÚLTIMO FATURTO -->> Avisaram que os campos de valor tem 08 caracteres porque tem os 2 dígitos depois da vírgula ex: 350,00 (mas o sistema não conta a vírgula)!
campo11 = Mid(mt(x),168,8) 'Criando uma matriz para os VALOR MAIOR ACÚMULO
campo12 = Mid(mt(x),176,8) 'Criando uma matriz para os VALOR DO ACÚMULO ATUAL
campo13 = Mid(mt(x),184,3) 'Criando uma matriz para os PAGAMENTO DE JUROS
campo14 = Mid(mt(x),187,3) 'Criando uma matriz para os PAGAMENTO EM CARTÓRIO
campo15 = Mid(mt(x),190,8) 'Criando uma matriz para os VALOR TOTAL A VENCER
campo16 = Mid(mt(x),198,8) 'Criando uma matriz para os VALOR ATRASO ATÉ 15D
campo17 = Mid(mt(x),206,8) 'Criando uma matriz para os VALOR ATRASO DE 16 À 30D
campo18 = Mid(mt(x),214,8) 'Criando uma matriz para os VALOR ATRASO MAIS DE 30D

stringSQL = "INSERT INTO 4em1.4em1_dismopel_clientes (cnpj, razao_social, situacao_atual, tipo_cobranca, limite_credito, media_atraso, data_cadastro, data_ultima, data_maior, valor_ultima, valor_maior, valor_atual, pagamento_juro, pagamento_cartorio, valor_vencer, valor_atraso_15, valor_atraso_16_30, valor_atraso_30) VALUES ('"& campo1 &"', '"& campo2 &"', '"& campo3 &"', '"&campo4 &"', '"& campo5 &"', '"& campo6 &"', '"& campo7 &"', '"& campo8 &"', '"& campo9 &"', '"& campo10 &"', '"& campo11 &"', '"& campo12 &"', '"& campo13 &"', '"& campo14 &"', '"& campo15 &"', '"& campo16 &"', '"& campo17 &"', '"& campo18 &"')"

objConexao.Execute(stringSQL)
Next
ObjConexao.Close
Set ObjConexao = Nothing
response.redirect "EssaPagina.asp?Linha="& Final+1
%>

Testa e avisa se funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites
nao funcionou!!!!
Pelo menos diz o Erro né!

Compartilhar este post


Link para o post
Compartilhar em outros sites

sempre da esse erro:Internal Server ErrorThe server encountered an internal error or misconfiguration and was unable to complete your request.Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.More information about this error may be available in the server error log.--------------------------------------------------------------------------------Web Server at 4em1.comTo conseguindo cadastrar ate 4000 registro.Tem como criar mais dois arquivo e cada um ler um pedaco e cadastrar ate 4000 registros?assim:arq1.asp = le 4000 registro ou linhas, do arquivo sist.txtarq2.asp = le 4000 registro ou linhas, do arquivo sist.txtarq3.asp = le o resto q sobrou registro ou linhas, do arquivo sist.txtconsegui fazer isso com 3 arquivos distintos de txt, mas queria ter so um arquivo e os 3 acima lessem por parte.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como diria o TIU Mário, natal tá chegando, ai vai seu presente de papai noel

o espirito natalino é tão bonito...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salgado será que é o banco de dados mysql q nao suporta 10000 registros?seriamelhor usar o sql server?

claro que suporta tiozinhoe poe zero nisso ai...o problema é outro com certeza

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.