Há uma coluna no Excel que deveria ser texto, mas o SSIS vê o texto numérico e o torna automaticamente flutuador de dupla precisão [DT_R8].
Posso alterá-lo manualmente nas colunas External e Output do ramo Output, mas o Error Output simplesmente se recusa a permitir que eu altere a respectiva coluna.
Error at Extract Stations [Excel Source [1]]: The data type for "output "Excel Source Error Output" (10)" cannot be modified in the error "output column "Group No" (29)".
Error at Extract Stations [Excel Source [1]]: Failed to set property "DataType" on "output column "Group No" (29)".
Eu tentei modificar o pacote xml. Eu tentei o IMEX=1
e, typeguessrow=0
mas nada disso resolveu o meu problema. Isso tem alguma correção? Também existem artigos sugerindo que você modifique seu registro para que o Excel leia mais do que as 8 linhas padrão antes de adivinhar o tipo de dados. Eu não quero seguir esse caminho porque, mesmo que funcionasse, teria que modificar o registro na máquina em que planejo executar o pacote.
O campo excel a ser importado para o campo nvarchar SQL lê, por exemplo
295.3
296.33
mas eles estão sendo gravados na tabela SQL como
295.30000000000001
296.32999999999998
Eu coloquei no visualizador de dados e os campos mostram
295.3
296.33
todo o caminho através da execução, que está correta, mas acho que quando ele atinge a fonte de destino OLE DB, de alguma forma o converte no
295.30000000000001
296.32999999999998
o que está errado.
Também tenho valores como V321.1 e V213.34, por exemplo, que definitivamente não são números inteiros e precisam ser armazenados como varchar.
fonte
Respostas:
É possível obter o arquivo como um arquivo .csv que pode ser importado como um arquivo de texto e não terá esse problema? Geralmente, retrocesso todos os arquivos do Excel e solicito outro formato, porque o SSIS e o Excel não funcionam bem em muitos níveis.
fonte
Parece que não há como corrigir esse problema. O Excel examina as primeiras linhas de dados da coluna e sempre força o tipo de dados para FLOAT, não importa o quê. Foi-me dada uma solução de criar um modelo com alguns caracteres varchar nas primeiras linhas (8 ou mais), para que o EXCEL escolha isso como o tipo de dados e depois importe meus dados. Uma coisa que ajudou é que, como estou usando o Source Safe, sou capaz de "Fazer check-in" de um arquivo para que ele torne meu arquivo de pacote "Somente leitura" para que o Visual Studio não possa alterar meus tipos de dados predefinidos.
fonte
Etapa 1: adicione
IMEX=1; MAXROWSTOSCAN=0
a cadeia de conexões (por exemploProvider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Source\filename.xlsx;Extended Properties="EXCEL 12.0 XML;HDR=YES;IMEX=1; MAXROWSTOSCAN=0"
).Etapa 2: feche a solução. Abra o pacote SSIS no editor de texto, encontre as colunas que continuavam voltando ao tipo de dados predefinido. Atualize-o manualmente no arquivo XML para o formato desejado.
Etapa 3: abra o pacote no SQL Server Data Tool e execute; agora você deve conseguir carregar os dados do arquivo.
fonte