GERANDO E IMPORTANDO ARQUIVO TEXTO
Bom dia amigos.
Estou importando os registros de um banco de dados do Access para o Sql Server.
Então faço assim: Leio os registros da tabela do Access e gero um arquivo texto.
Depois leio o arquivo texto e gravo os registros no Sql Server.
Já fiz isso antes com uma tabela e funcionou tudo bem. Agora, essa tabela que preciso
importar para o Sql Server, tem um dos campos da tabela do Access que é tipo: Memorando.
Vou demonstrar como estou fazendo:
Dim conexao As New SqlConnection([Ô]Data Source=Server;Integrated Security=SSPI;Initial Catalog=BD)
Dim str As New StreamReader([Ô]c:\arquivo.csv[Ô])
Dim line As String = Nothing
While str.Read()
line = str.ReadLine
If line Is Nothing Then Exit While
conexao.Open()
Dim cmd As SqlCommand
cmd = New SqlCommand([Ô]Insert into Tabela(numero,data,observacao)VALUES(@numero,@data,@observacao)[Ô], conexao)
cmd.Connection = conexao
cmd.Parameters.AddWithValue([Ô]@numero[Ô], Mid(line, 1, 9)) [ô] campo tipo texto
cmd.Parameters.AddWithValue([Ô]@data[Ô], Mid(line, 8, 10)) [ô] campo tipo data
cmd.Parameters.AddWithValue([Ô]@observacao[Ô], Mid(line, 19, 500)) [ô] campo tipo memorando
cmd.ExecuteNonQuery()
conexao.Close()
End While
str.close
O restultado do arquivo gerado é esse:
2892;08/09/2009;
2893;08/09/2009;
2894;09/09/2009;
2895;09/09/2009;CHEQUE: NOME DO CLIENTE - BCO. REAL - 012055 - R$ 773,00
CHEQUE: NOME DO CLIENTE - BCO. REAL - 012049 - R$ 261,00
CHEQUE: NOME DO CLIENTE - BCO. REAL - 010405 - R$ 1.000,00
CHEQUE: NOME DO CLIENTE - BRADESCO - 000064 - R$ 840,00
2896;09/09/2009;
2897;10/09/2009;
2898;10/09/2009;CHEQUE: NOME DO CLIENTE - HSBC - 001265 - R$ 235,00
CHEQUE: NOME DO CLIENTE - ITAU - 000072 - R$ 333,00
2899;10/09/2009;CHEQUE: NOME DO CLIENTE - BCO. BRASIL - 850209 - R$ 143,00
2900;11/09/2009;
2901;11/09/2009;
2902;11/09/2009;
2903;14/09/2009;
2904;15/09/2009;CHEQUE: NOME DO CLIENTE - CREDIMOTA - 000666 - R$ 1.589,59
CHEQUE: NOME DO CLIENTE - CREDIMOTA - 000667 - R$ 1.589,60
Aà vem a minha dúvida: Nas linhas onde não é gerado o campo memo, está ok. porém onde o
campo memo é gerado, como fazer para entender que tem que importar esse campo até o final dele?
Por exemplo, na quarta linha no campo [Ô]observacao[Ô] tem que gravar desde o segundo ponto e vÃrgula
até onde termina ... R$ 840,00.
Se é que eu consegui me explicar, alguém tem uma solução para esse caso?
Até mais.
Estou importando os registros de um banco de dados do Access para o Sql Server.
Então faço assim: Leio os registros da tabela do Access e gero um arquivo texto.
Depois leio o arquivo texto e gravo os registros no Sql Server.
Já fiz isso antes com uma tabela e funcionou tudo bem. Agora, essa tabela que preciso
importar para o Sql Server, tem um dos campos da tabela do Access que é tipo: Memorando.
Vou demonstrar como estou fazendo:
Dim conexao As New SqlConnection([Ô]Data Source=Server;Integrated Security=SSPI;Initial Catalog=BD)
Dim str As New StreamReader([Ô]c:\arquivo.csv[Ô])
Dim line As String = Nothing
While str.Read()
line = str.ReadLine
If line Is Nothing Then Exit While
conexao.Open()
Dim cmd As SqlCommand
cmd = New SqlCommand([Ô]Insert into Tabela(numero,data,observacao)VALUES(@numero,@data,@observacao)[Ô], conexao)
cmd.Connection = conexao
cmd.Parameters.AddWithValue([Ô]@numero[Ô], Mid(line, 1, 9)) [ô] campo tipo texto
cmd.Parameters.AddWithValue([Ô]@data[Ô], Mid(line, 8, 10)) [ô] campo tipo data
cmd.Parameters.AddWithValue([Ô]@observacao[Ô], Mid(line, 19, 500)) [ô] campo tipo memorando
cmd.ExecuteNonQuery()
conexao.Close()
End While
str.close
O restultado do arquivo gerado é esse:
2892;08/09/2009;
2893;08/09/2009;
2894;09/09/2009;
2895;09/09/2009;CHEQUE: NOME DO CLIENTE - BCO. REAL - 012055 - R$ 773,00
CHEQUE: NOME DO CLIENTE - BCO. REAL - 012049 - R$ 261,00
CHEQUE: NOME DO CLIENTE - BCO. REAL - 010405 - R$ 1.000,00
CHEQUE: NOME DO CLIENTE - BRADESCO - 000064 - R$ 840,00
2896;09/09/2009;
2897;10/09/2009;
2898;10/09/2009;CHEQUE: NOME DO CLIENTE - HSBC - 001265 - R$ 235,00
CHEQUE: NOME DO CLIENTE - ITAU - 000072 - R$ 333,00
2899;10/09/2009;CHEQUE: NOME DO CLIENTE - BCO. BRASIL - 850209 - R$ 143,00
2900;11/09/2009;
2901;11/09/2009;
2902;11/09/2009;
2903;14/09/2009;
2904;15/09/2009;CHEQUE: NOME DO CLIENTE - CREDIMOTA - 000666 - R$ 1.589,59
CHEQUE: NOME DO CLIENTE - CREDIMOTA - 000667 - R$ 1.589,60
Aà vem a minha dúvida: Nas linhas onde não é gerado o campo memo, está ok. porém onde o
campo memo é gerado, como fazer para entender que tem que importar esse campo até o final dele?
Por exemplo, na quarta linha no campo [Ô]observacao[Ô] tem que gravar desde o segundo ponto e vÃrgula
até onde termina ... R$ 840,00.
Se é que eu consegui me explicar, alguém tem uma solução para esse caso?
Até mais.
A linha que se refere é esta?
[txt-color=#e80000]CHEQUE: NOME DO CLIENTE - BRADESCO - 000064 - R$ 840,00[/txt-color]
[txt-color=#e80000]CHEQUE: NOME DO CLIENTE - BRADESCO - 000064 - R$ 840,00[/txt-color]
Tecla, desculpe a demora em responder. Aconteceram muuuuuitos problemas aqui e só agora é que estou conseguindo resolver as pendências, mas conseguimos resolver de outra forma, alterei o layout do arquivo texto e agora consegui exportar certinho. Mesmo asim, obrigado pela disposição em tentar me ajudar. Valeu.
Até mais.
Até mais.
Tópico encerrado , respostas não são mais permitidas