BStar Postado Outubro 8, 2009 Denunciar Share Postado Outubro 8, 2009 (editado) Olá pessoal... Bom... Estou com um problemão aqui e quero contar com a ajuda de vocês:Eu tenho uma planilha .xls que possui um campo chamado CPF;Esse campo possui 15.000 registros e eu vou importá-los para o SQL Server 2005, até ai tudo bem;O problema é que alguns cpf's possuem '0' (zeros) na frente (Esquerda) nessa planilha ex: 000123456700 e, quando tento importar para o SQL Sever, ele some com os zeros da frente ficando assim: 123456700.(ahh preciso saber também se o tipo do campo criado no sql server pode afetar em algo na hora da importação)Isso pode variar, tipo, tem horas que as 4 primeiras "casas" do campo CPF contém zeros (000012345600), tem horas que só as 3 "casas" (000123456700),tem horas que 2 ou 1 casa possui zero na frente.A minha idéia era fazer um insert + loop + if e ir inserindo 0 (zeros) a direita conforme a necessidade (sempre serão nestes 4 casos).Mas como sou novo no SQL Server, gostaria de uma ajuda...O meu muito obrigado por enquanto. Editado Outubro 8, 2009 por BStar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Outubro 8, 2009 Denunciar Share Postado Outubro 8, 2009 Bom dia Amigo. Este problema está ocorrendo porque o campo criado no SQL é numérico. Sendo assim, os zeros a esquerda são suprimidos. Mesmo você fazendo um loop pra inserir os zeros, não conseguirá. você terá q alterar o campo de numérico para caracter. Asism resolverá seu problema na migração mesmo, onde os zeros a esquerda não serão mais suprimidos. Caso tenha alguma duvida ou problema, posta aí!!! Espero ter ajudado.... :.) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BStar Postado Outubro 8, 2009 Autor Denunciar Share Postado Outubro 8, 2009 Opa fulvio, obrigado pela rápida resposta.Então... Segundo a sua sugestão, eu criei um campo do tipo String (VARCHAR(14))... Mas acontece que quando efetuo os Inserts, ele insere normalmente mas adiciona uns caracteres estranhos... Um exemplo: no Excel está 00001106120 e quando eu faço o insert, ele insere assim: 1.10612e+006 :( Será que tem como resolver? Mais uma vez obrigado!Abs! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Outubro 8, 2009 Denunciar Share Postado Outubro 8, 2009 O que voce está usando para inserir os dados na tabela? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BStar Postado Outubro 8, 2009 Autor Denunciar Share Postado Outubro 8, 2009 (editado) Olá kandrade...Então... eu estou pegando direto da planilha Excel, to abrindo ela e fazendo o insert direto.Aqui eu abro a planilha:SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;DATABASE=C:\bancos\cpf.xls', 'SELECT CPF FROM [plan1$]'); Depois crio a tabela: CREATE TABLE TB_CPF ( CPF VARCHAR (100) ); Depois faço o Insert: INSERT INTO TB_CPF SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;DATABASE=C:\bancos\cpf.xls', 'SELECT CPF FROM [plan1$]');E, quando faço o Select da TB_CPF, aparace desse jeito:Alguma sugestão?Obrigado mais uma vez.(ps: OPENROWSET é usado para abria uma planilha em excel como se fosse um banco de dados mesmo)(ps2: Já tentei diminuir o tamanho do campo mas acontece a mesma coisa :() Editado Outubro 8, 2009 por BStar Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 fulvio Postado Outubro 8, 2009 Denunciar Share Postado Outubro 8, 2009 Os caracteres estranhos que estão aparecendo são notações científicas.você está com o SQL 2005, não é? Já tentou utilizar o "SQL Business Intelligence Development Studio" para fazer a importação dos dados?Na planilha do excel, tem apenas dados de CPF? Caso positivo, você pode copiar os dados e colar em um TXT, e tentar realizar a importação novamente...Se tiver alguma dúvida, estarei on no MSN a tarde... daasabh@hotmail.com Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 kandrade Postado Outubro 8, 2009 Denunciar Share Postado Outubro 8, 2009 No arquivo que está exportando faça o seguinte:- Clique com o botão direito em cima da coluna. Ex: coluna A;- Clique em formatar celulas;- Ajuste o formato para "Texto";- Salve a planilha e tente novamente. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 BStar Postado Outubro 8, 2009 Autor Denunciar Share Postado Outubro 8, 2009 (editado) Olá pessoal, boa tarde...Então.. consegui resolver da seguinte maneira:CREATE TABLE CPF (CPF_1 VARCHAR (11)) INSERT INTO CPF SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;DATABASE=C:\bancos\cpf.xls', 'SELECT CPF FROM [cpf$]') CREATE TABLE CPF_CONVERTIDO (CP_CPF_CONVERTIDO VARCHAR (11)) INSERT INTO CPF_CONVERTIDO SELECT REPLICATE ( '0' ,11 - LEN(CPF_1) ) + CPF_1 FROM CPFCriei uma tabela (cpf);Abri a planilha excel já inserindo o campo que eu queria da planilha na minha tabela; Criei outra tabela (cpf_convertido);Depois usei o Replicate e "disse" para adicionar '0' até que se complete o tamanho de 11 dígitos no campo cp_cpf_convertido.Muito bom mesmo... Mais uma vez obrigado a todos que me ajudaram!Abraço! Editado Outubro 8, 2009 por BStar Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
BStar
Olá pessoal...
Bom... Estou com um problemão aqui e quero contar com a ajuda de vocês:
Eu tenho uma planilha .xls que possui um campo chamado CPF;
Esse campo possui 15.000 registros e eu vou importá-los para o SQL Server 2005, até ai tudo bem;
O problema é que alguns cpf's possuem '0' (zeros) na frente (Esquerda) nessa planilha ex: 000123456700 e, quando tento importar
para o SQL Sever, ele some com os zeros da frente ficando assim: 123456700.
(ahh preciso saber também se o tipo do campo criado no sql server pode afetar em algo na hora da importação)
Isso pode variar, tipo, tem horas que as 4 primeiras "casas" do campo CPF contém zeros (000012345600), tem horas que só as 3 "casas" (000123456700),
tem horas que 2 ou 1 casa possui zero na frente.
A minha idéia era fazer um insert + loop + if e ir inserindo 0 (zeros) a direita conforme a necessidade (sempre serão nestes 4 casos).
Mas como sou novo no SQL Server, gostaria de uma ajuda...
O meu muito obrigado por enquanto.
Editado por BStarLink para o comentário
Compartilhar em outros sites
7 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.