Guest Wgp Postado Junho 11, 2007 Denunciar Share Postado Junho 11, 2007 Fiz um programa para migração de base de dados e conecto via ODBC em uma base e seleciono os dados e vou montando as querys de insert,minha dúvida: - Criei um variavel do DADOSTAB do tipo ADODB.recordset, e mando ela executar e guardar um um select abaixo: "select * from tabela1". Não executei ainda, por que estou com medo de o objeto ADODB.recordset não aguentar tantos dados. A tabela tem 1 milhão de linhas. alguém já fez algo parecido, será que isso vai rodar, preciso saber disso antes de mandar rodar. Segue o código:Sub conecta()' Conexão com o Banco de DadosDim StringConexao As StringDim NomeODBC As StringDim Usuario As StringDim Senha As StringDim rstDados As New ADODB.RecordsetDim Pesquisa As StringDim cnnDados As ADODB.ConnectionDim Testedados As StringDim Insere As StringDim fso As New Scripting.FileSystemObjectDim ts As Scripting.TextStreamDim contador As LongNomeODBC = "fontedch"Usuario = "DCOWN"Senha = "123"StringConexao = "Data Source='" & NomeODBC & "';User ID='" & Usuario & "';Password='" & Senha & "';"Set cnnDados = New ADODB.Connection cnnDados.ConnectionString = StringConexaocnnDados.OpenrstDados.CursorLocation = adUseClient Pesquisa = " select * from tbteste" rstDados.Open Pesquisa, cnnDados Testedados = rstDados!Nome Set ts = fso.OpenTextFile("c:\meutexto.txt", ForWriting, True) contador = 0 While Not (rstDados.EOF) Insere = "insert into tbTeste (Codigo, Nome) values ('" & rstDados!codigo & "','" & rstDados!Nome & "');" ts.Write (Insere) ts.WriteBlankLines (1) contador = contador + 1 If contador = 3 Then ts.Write ("commit;") ts.WriteBlankLines (1) contador = 0 End If rstDados.MoveNext Wend ts.Close Set ts = Nothing rstDados.Close End SubPrivate Sub Command1_Click()conectaEnd Sub Private Sub Text1_Change()End Sub Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Donati Postado Junho 11, 2007 Denunciar Share Postado Junho 11, 2007 Boa TardeNunca fiz com tantos dados, porem já gerei recodsets com em torno de meio milhao de registros e não tive problema nenhum, a unica coisa é que sera um pouco demorado para executar FUI!!!!!!!!Donati Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest Wgp Postado Junho 11, 2007 Denunciar Share Postado Junho 11, 2007 Donati você lembra quanto tempo demorou?São muitas horas?Obrigado,Wgp Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Donati Postado Junho 11, 2007 Denunciar Share Postado Junho 11, 2007 Cara não me lembro não faz algum tempo que fiz issoDonati Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Guest Wgp
Fiz um programa para migração de base de dados e conecto via ODBC em uma base e seleciono os dados e vou
montando as querys de insert,minha dúvida:
- Criei um variavel do DADOSTAB do tipo ADODB.recordset, e mando ela executar e guardar um um select abaixo:
"select * from tabela1". Não executei ainda, por que estou com medo de o objeto ADODB.recordset não aguentar
tantos dados. A tabela tem 1 milhão de linhas. alguém já fez algo parecido, será que isso vai rodar, preciso
saber disso antes de mandar rodar. Segue o código:
Sub conecta()
' Conexão com o Banco de Dados
Dim StringConexao As String
Dim NomeODBC As String
Dim Usuario As String
Dim Senha As String
Dim rstDados As New ADODB.Recordset
Dim Pesquisa As String
Dim cnnDados As ADODB.Connection
Dim Testedados As String
Dim Insere As String
Dim fso As New Scripting.FileSystemObject
Dim ts As Scripting.TextStream
Dim contador As Long
NomeODBC = "fontedch"
Usuario = "DCOWN"
Senha = "123"
StringConexao = "Data Source='" & NomeODBC & "';User ID='" & Usuario & "';Password='" & Senha & "';"
Set cnnDados = New ADODB.Connection
cnnDados.ConnectionString = StringConexao
cnnDados.Open
rstDados.CursorLocation = adUseClient
Pesquisa = " select * from tbteste"
rstDados.Open Pesquisa, cnnDados
Testedados = rstDados!Nome
Set ts = fso.OpenTextFile("c:\meutexto.txt", ForWriting, True)
contador = 0
While Not (rstDados.EOF)
Insere = "insert into tbTeste (Codigo, Nome) values ('" & rstDados!codigo & "','" & rstDados!Nome & "');"
ts.Write (Insere)
ts.WriteBlankLines (1)
contador = contador + 1
If contador = 3 Then
ts.Write ("commit;")
ts.WriteBlankLines (1)
contador = 0
End If
rstDados.MoveNext
Wend
ts.Close
Set ts = Nothing
rstDados.Close
End Sub
Private Sub Command1_Click()
conecta
End Sub
Private Sub Text1_Change()
End Sub
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.