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

Vamos mudar uma coisinha para dar mais um tempinho para o server.

<%
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)
Processados = Processados &"Linha "& x &"processada com sucesso!<br>"
Next
ObjConexao.Close
Set ObjConexao = Nothing
response.Write "<meta http-equiv=""refresh"" content=""2; url=EssaPagina.asp?Linha="& Final+1 &""" />"
Response.Write Processados
%>

Estou utilizando uma rotina muito utilizada para envio de e-mails em massa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu esse erro agora: Número do Erro: -2147217900Descrição do Erro: [MySQL][ODBC 3.51 Driver][mysqld-4.1.7-nt]You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'S CAR MANUTENCAO DE VEICULOS LTDA ', 'ATIVO Alguem entende?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tem aguma ' (aspa simples) no seu txt?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Repetindo a pergunta, tem alguma ASPA SIMPLES no seu arquivo? Vamos ter que tratar isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deu esse erro:Erro de compilação do Microsoft VBScript (0x800A03F9)'Then' esperado/asp/teste/mysql1/bancodedados/consultalocal.asp, line 64, column 21If Final > UBound(mt)--------------------^Tipo de navegador: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322) Página: GET /asp/teste/mysql1/bancodedados/consultalocal.asp Hora: quinta-feira, 17 de novembro de 2005, 17:08:11 Mais informações:

Compartilhar este post


Link para o post
Compartilhar em outros sites

com certeza deve ter salgadoaté pela string que apareceu aliS CAR MANUTENCAO DE VEICULOS LTDAdevia táMARIO'S CAR MANUTENCAO DE VEICULOS LTDA

Compartilhar este post


Link para o post
Compartilhar em outros sites

sera que ta dando algum erro pq tem alguma asp simples (') dentro do arquivo txt?

lá em cima simdevia estar duas juntas pra valer por uma

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um replace simples resolve. Lá na variavel que recebe o ReadAll você faz um

Variavel = Replace(variavel,"'","''")

que deve "matar" isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

como ficaria no meu codigo salgado?ficaria assim é:campo1(x) = Left(mt(x),14) 'Criando uma matriz para os CNPJv1 = Replace(campo1(x),"'","''")ou assim:campo1(x) = Replace(Left(mt(x),14),"'","''") 'Criando uma matriz para os CNPJ

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assim:

<%
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
Ver_Base = Replace(Ver_Base,"'","''") 'Aqui estou trocando a ' por duas '
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) Then
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)
Processados = Processados &"Linha "& x &"processada com sucesso!<br>"
Next
ObjConexao.Close
Set ObjConexao = Nothing
response.Write "<meta http-equiv=""refresh"" content=""2; url=EssaPagina.asp?Linha="& Final+1 &""" />"
Response.Write Processados
%>

E ainda corrigi um errinho meu num IF.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu a todos, agora deu certo!!!!

parabens tiozinho a voce e ao salgado que detonou neste topico

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.