none
SSIS - Campo texto com muitos caracteres RRS feed

  • Pergunta

  • Estou com um problema pessoal,

    tenho que trazer dados do Excel para o SSIS 2005, porém tem campos de texto na planilha que chegam a 22475 caracteres, mas quando coloco no SSIS ele coloca o campo como:

     DataType: Unicode string [DT_WSTR]

    Length: 255

    Já tentei forçar a conversão no Advanced Editor para text stream [DT_TEXT] e Unicode text stream [DT_NTEXT] mas da erro porque eu consigo alterar no OLE DB Source Output tanto o External Columns quanto o Output Columns mas no OLE DB Source Error Output eu não consigo alterar, quando tento da erro dizendo: “Property value is not valid”.

    E se só alterar no OLE DB Source Output da o seguinte erro:

    “Validation error: OLE DB Source [3262]: The output column "Nome_da_Coluna" (3297) on the error output has properties that do not match the properties of its corresponding data source column.”

    Outra maneira que pensei é que como os dados estão em excel a sintaxe do SQL que uso pra trazer os dados para o SSIS é a mesma do Access, então procurei na intenet alguma função de access para converter campos texto para memorando, mas também não encontrei.

    Como já perceberam eu estou usando para conexão o OLE DB Source, porque a planilha está em Excel 2007 e o SSIS é versão 2005, então não da pra fazer a conexão usando Excel Source, não sei se isso pode ter alguma influência.

    Alguém tem alguma idéia de como resolver isso ?

    Agradeço a atenção de todos.

    quinta-feira, 14 de abril de 2011 21:39

Respostas

  • Bom Dia,

    Acredito que você possa usar o Excel Source se instalar os Providers para o Excel 2007 (ou o Excel propriamente dito) na máquina onde está o SSIS 2005.

    Uma outra alternativa é abrir o DTSX no notepad e editar a propriedade diretamente, mas esse deve ser o último recurso.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Richard Juhasz segunda-feira, 6 de junho de 2011 20:16
    sexta-feira, 15 de abril de 2011 12:36

Todas as Respostas

  • Gustavo,

    Qual foi o datatype que você configurou na sua tabela no SQL Server?

    Tente utilizar VarChar(Max) ou NVarChar(Max)!!!


    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]
    quinta-feira, 14 de abril de 2011 23:11
    Moderador
  • Oi Junior,

    cara, não estou tendo problema com SQL Server não...

    o problema está em trazer os dados da planilha Excel para o SSIS.

    sexta-feira, 15 de abril de 2011 03:45
  • Bom Dia,

    Acredito que você possa usar o Excel Source se instalar os Providers para o Excel 2007 (ou o Excel propriamente dito) na máquina onde está o SSIS 2005.

    Uma outra alternativa é abrir o DTSX no notepad e editar a propriedade diretamente, mas esse deve ser o último recurso.

    [ ]s,

    Gustavo Maia Aguiar
    http://gustavomaiaaguiar.wordpress.com


    Classifique as respostas. O seu feedback é imprescindível
    • Marcado como Resposta Richard Juhasz segunda-feira, 6 de junho de 2011 20:16
    sexta-feira, 15 de abril de 2011 12:36
  • Bom dia Gustavo,

     

    Em relação a problemas de conexão pelo Excel ser 2007 e o SSIS 2005 não existem, o SSIS trabalha em cima dos providers que você tem disponiveis e no caso você tem o de EXCEL pois já consegue ler a planilha.

    Tentar forçar alteração de tamanho no advanced editor não vai funcionar, o que você pode tentar é acrescentar configurações na connection string do excel, dentro de "Extended Properties" sugiro que coloque "IMEX=1;MAXSCANROWS=0" além do que já existe, para que ele não tente mapear o datatype das colunas e crie um padrão genérico, mas ainda assim não sei se resolvera a questão de tamanho,

    Caso isso não funcione uma alternativa é fazer a query no próprio SQL, usando o comando OPENROWSET e ver se dessa forma ele vai mapear o tamanho possível da coluna, ou talvez assim fique mais fácil vc realizar a conversão do campo, segue abaixo um exemplo:

    SELECT

    CAMPO 1,

    CAMPO 2,

    CAMPO 3,

    CAMPO 4,

    CAMPO 5                                          

    FROM

    OPENROWSET ('Microsoft.ACE.OLEDB.12.0','Excel 12.0 Xml;Database=\\DIRETORIO\PASTA\ARQUIVO.xls;HDR=Yes;IMEX=1','SELECT * FROM [PLAN1$A1:L65000]')

     

    Espero que algo acima funcione!

     

    Abrs,

    PG

     

     

    sexta-feira, 15 de abril de 2011 12:55
  • Paulo,

    No Excel os seus dados estão formatados como Texto?

    Veja se por acaso não estão configurados como personalizado!!!!


    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]
    domingo, 17 de abril de 2011 00:45
    Moderador