Fazer uma PerguntaFazer uma Pergunta
 

Perguntaqtde caracteres

  • sexta-feira, 30 de outubro de 2009 16:35EduMarques Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Ola pessoal,

    tenho uma planilha com 2 colunas com bastante caracteres .

    mandei verificar a quantidade e nenhum deu acima do que eu limitei na tabela do sql.

    Mais quando vou exportar a planilha para a tabela no sql. dá o erro dizendo que uma linha dessa coluna está com
    a quantidade  de caracteres a mais que o especificado na tabela.

    Existe restrições ou recomendações ??

    obrigado
    Eduardo - Asp.Net - Web developer - SQL

Todas as Respostas

  • sexta-feira, 30 de outubro de 2009 16:44Anderson.dpa Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Boa tarde Eduardo

    Como você está fazendo a importação?


    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
  • sexta-feira, 30 de outubro de 2009 16:49EduMarques Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Atraves do Import and Export Data que vem no pacote SQL.

    Eu seleciono arquivo excel, seleciono a planilha.

    Escolha a base de dados , verifico os campos e manda exportar ..


    Eduardo - Asp.Net - Web developer - SQL
  • sexta-feira, 30 de outubro de 2009 16:52Anderson.dpa Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Pode ser que a planílha contenha caracteres não visíveis, uma boa alternativa seria você importar as informações para uma outra tabela do SQL Server, e aí fazer a análise do tamanho do campo.




    Espero ter ajudado
    Anderson - DBA/MCP/MCTS/MCITP/MCT - Sua pergunta foi respondida ? Marque-a como tal! www.myspace.com/andersondpa
  • sexta-feira, 30 de outubro de 2009 18:32Cleyton Esteves Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Edu, quando vc importa informações de outras bases ou planilha para o SQL Server, as informações nas outras fontes de dados podem estar gravadas como unicode onde se usa 2 byte por caracter e você pode estar tentando inserir estar informação em um coluna que recebe informões non-unicode (varchar, char) que utiliza 1 byte por caracter.

    Neste caso é preciso converter esta informação no momento de importar, você pode fazer isso utilizando o objeto data conversion da ferramenta Integration Services.

    ou gravar a informação em uma coluna unicode no sql server (nchar, nvarchar)
    ITILF | MCP | MCTS | MCITP SQL Server 2005 & 2008. http://www.bydocs.com
    • EditadoCleyton Esteves domingo, 1 de novembro de 2009 17:34termo bit utilizado incorretamente
    •  
  • sexta-feira, 30 de outubro de 2009 19:00Junior Galvão - MVPMVPMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Edu,

    Qual é a versão do SQL Server que você esta utilizando?

    Os tipos de dados que você esta utilizando nestas colunas estão sendo interpretados normalmente pelo SQL Server?


    Pedro Antonio Galvão Junior - MVP - Windows Server System - SQL Server/Coordenador de Projetos/DBA
  • domingo, 1 de novembro de 2009 16:00Heberton Melo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Olá Cleyton,

    Só corrigindo, os tipos de dados Unicode são um padrão de indústria projetados para permitir que texto e símbolos a parti de todos os idiomas sejam representados consistentemente e manipulados pelos computadores, com isso as informações armazenadas nos tipos de dados Unicode podem ser transmitida entre os computadores, resultando, assim, sempre na decodificação de seus caracteres originais.

    Mas em geral os tipos de dados de caractere são mais eficiente que os de Unicode simplesmente pelo fato de que a maioria dos collations utiliza um BYTE por caractere, em quanto o Unicode utiliza dois BYTE por caractere, onde um BYTE é formado por um conjunto de oito bits.

    Outra informações importante e que vale salientar é que os tipos de dados de comprimento variável ajustam seu armazenamento para acomodar o valor da coluna, mas sua desvantagem é que eles exigem dois BYTES adicionais para controlar o comprimento do valor. 

    Veja um exemplo, digamos que eu tenho uma coluna do tipo VARCHAR(10) e nessa coluna tenho um valor de "Teste", ela empregará sete BYTES para armazena o valor, sendo que dois bytes será para controlar o comprimento do valor, e os outro cinco BYTE para armazenar o valor real.

    Mas em fim Edu Marques, acho a idéia de Anderson válida, pois como ele mesmo falou possa ser que existam caracteres não visíveis.

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog:
    http://heberton-melo.spaces.live.com

  • domingo, 1 de novembro de 2009 17:32Cleyton Esteves Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     
    Heberton obrigado pela resposta detalhada e desculpe pelo termo incorreto empregado, o objetivo da minha resposta era alertar que caso as informações importadas estejam no padrão Unicode e ele esteja tentando armazena-las em uma coluna non-unicode haverá problemas.

    Isso normalmente acontece por exemplo quando importamos informações de DB2 para SQL Server, onde normalmente na maioria das bases DB2 as informações são armazenadas no padrão Unicode.

    Quando importamos informações de excel também pode ser necessario uma tratativa.

    Para estes casos uma das soluções seria usar o SSIS. utilizando o data conversion isso pode ser solucinado facilmente, pois além de transaformar o dado existe a possibilidade de setar a propriedade para continuar após um erro, que em alguns casos devido a diferença entre os padrões unicode e non-unicode mesmo efetuando a transformação ele pode vir com um caracter de controle adicional, desta forma ao tentar inserir a informação em uma coluna com limite por exemplo de varchar(10) após a conversão de uma informação Unicode para Non-Unicode com os mesmos 10 caracteres pode resultar em 11 caracteres, assim ao tentar a inserção o resultaria em um erro, pois estariamos tentando inserir 11 caracteres onde só é permitido 10.

    setando a propriedade de prosseguir após o erro neste caso a importação seria bem sucedida. 
    ITILF | MCP | MCTS | MCITP SQL Server 2005 & 2008. http://www.bydocs.com
  • domingo, 1 de novembro de 2009 17:50Heberton Melo Medalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Olá Cleyton Esteves,

    Sem problemas Cleyton, tenho certeza que você utilizou o temo incorreto sem querer, pois a sua idéia e explicação é totalmente plausível.
     

    Caso tenha lhe ajudado não se esqueça de marca como útil, só assim ajudará a melhorar a qualidade do fórum.

    Heberton Melo
    MCP | MCTS em SQL Server 2008 | Projetista de Dados

    Blog: http://heberton-melo.spaces.live.com

  • sexta-feira, 13 de novembro de 2009 10:40Fernanda SimõesMSFT, ModeradorMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuárioMedalhas de usuário
     

    Edu,

    Você conseguiu solucionar o seu problema?
    Caso afirmativo poste a solução para que outras pessoas se beneficiem.

    Att,
    Fernanda


    “Caso esta resposta tenha ajudado a solucionar sua dúvida, favor clicar em “Marcar como Resposta” para beneficiar outros membros da comunidade que estejam lendo este thread”.