Usuário com melhor resposta
Migrando do Excel para SQL2008 campo varchar é gravado com ponto flutuante

Pergunta
-
SQL2008 Standard R2 - Excel2007
Ao executar a instrução abaixo a coluna CLASS_FISCAL da planilha é migrada para a tabela Produtos (campo homonimo) com ponto flutuante, mas o que não entendo é que na tabela o campo está como VARCHAR(20) e na planilha a coluna está formatada como Texto.
Ex: na planilha a coluna está preenchida como 27101130, mas na tabela o campo é gravado com 2.71011e+007 (mesmo sendo Varchar !). Se formatar a referida coluna no Excel como Geral, Numérico, ou mesmo Personalizado, o erro persiste.
Como isso é possível ?
Instrução:
update P set
P.CLASSIFICACAO_FISCAL = P_EXCEL.CLASS_FISCAL from Produtos P inner join
(select * from OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;Database=D:\ATUALIZACAO_CF.XLS',
'select CODIGO_PRODUTO, DESCRICAO, CLASS_FISCAL from [PLAN1$]')) P_EXCEL ON
P.CODIGO_PRODUTO = P_EXCEL.CODIGO_PRODUTOnotas:
-Já experimentei colocar '....SUBSTRING(CLASS_FISCAL,1,8) from [PLAN1$]' mas a instrução dá erro, porém o interpretador não consegue relatar qual erro. Também já experimentei colocar 'select * from [PLAN1$]' mas o erro do pto flutuante persiste.
Muito obrigado pela atenção
Respostas
-
Olá Heloisa,
Consegui resolver, mas de uma forma mais complicada usando a sugestão do Eduardo, e levando em consideração o tempo curto que eu tinha p/isso.
Fiz assim:
Montei toda instrução no Excel (fiz na primeira linha (inserindo/editando colunas) e depois copiei para as outras linhas). Depois copiei tudo e colei no SQL (ManagementStudio), editei alguns detalhes no próprio SQL (CTRL+H) e rodei a instrução. Funcionou.
Muito obrigado pelo retorno !!!
Dival
- Marcado como Resposta Heloisa Pires terça-feira, 17 de julho de 2012 16:43
Todas as Respostas
-
Dival, bom dia.
Acrescente um apóstrofe (') antes no número na planilha excel. Desta forma vc forcará o excel a interpretar este campo como um campo texto e consequentemente na importação o SQL reconhecerá este campo como um nvarchar.
Abs.
Eduardo Gomes - http://www.h1solucoes.com.br - Twitter: @edugp_sp
- Sugerido como Resposta Heloisa Pires quarta-feira, 4 de julho de 2012 12:07
-
Dival,
No Select você chegou a utilizar o comando Convert para forçar a conversão dos valores?
Pedro Antonio Galvão Junior [MVP | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados | SorBR.Net | Professor Universitário | MSIT.com]
-
-
Olá Heloisa,
Consegui resolver, mas de uma forma mais complicada usando a sugestão do Eduardo, e levando em consideração o tempo curto que eu tinha p/isso.
Fiz assim:
Montei toda instrução no Excel (fiz na primeira linha (inserindo/editando colunas) e depois copiei para as outras linhas). Depois copiei tudo e colei no SQL (ManagementStudio), editei alguns detalhes no próprio SQL (CTRL+H) e rodei a instrução. Funcionou.
Muito obrigado pelo retorno !!!
Dival
- Marcado como Resposta Heloisa Pires terça-feira, 17 de julho de 2012 16:43