none
Executar Left Join no Oracle via SSIS RRS feed

  • Pergunta

  • Tenho um DTS onde excuta um comando Oracle e carrega o resultado no SQL. Porém este comando é um Left Join no Oracle. Quando tento executar o mesmo dá um erro alegando que não reconhece esse comando.

     

    Como poderia executar o Left Join das tabelas Oracle e realizar o meu serviço de carregar a minha tabela com fazia anteriormente com o Inner Join.

    segunda-feira, 12 de maio de 2008 17:35

Respostas

  • Amigos,

     

    identifiquei o problema. O que estava acontecendo é que após retirar a chave primária esqueci de marcar o campo Allow null, ou seja, ele não estava aceitando valores null para os campo que eu tinha considerado chave e retirado posteriormente.

     

    Desde já agradeço pela ajuda

    terça-feira, 13 de maio de 2008 12:41

Todas as Respostas

  • Amigos,

     

    Este é o select que eu posso para selecionar os dados no Oracle e posteriormente importa-los para o SQL 2005.

    Ressalto que o mesmo SQL é exucutado no Oracle normalmente.

    Poderiam me ajudar.

     

    Segue erro:

     

    TITLE: Microsoft Visual Studio
    ------------------------------

    Error at Data Flow Task [OLE DB Source [1]]: An error occurred due to no connection. A connection is required when requesting metadata. If you are working offline, uncheck Work Offline on the SSIS menu to enable the connection.

     

    ------------------------------
    ADDITIONAL INFORMATION:

    Exception from HRESULT: 0xC0202022 (Microsoft.SqlServer.DTSPipelineWrap)

    ------------------------------
    BUTTONS:

    OK
    ------------------------------

     

     

    Code Snippet

    Select CAST(ILA.INVOICE_ACCOUNT_ID AS int) CONTARBOR, CAST(ITSI.INVOICE_ACCOUNT_ID AS Int) INVOICE_ACCOUNT_ID,
         CAST(ITSI.SERV_INST_NUMBER As Int) SERV_INST_NUMBER,
         Max(ITSI.SERV_INST_STATUS_ID) SERV_INST_STATUS_ID,
         Max(ITSI.SERV_INST_STATUS_DATE) SERV_INST_STATUS_DATE,
         Max(ITSI.SERV_INST_RATEPLAN) SERV_INST_RATEPLAN,
         ITAIA.CONTRACT_DATE,
         ITAIA.RISK_LEVEL_ID,
         ITAIA.TAX_PAYER_NUMBER,
         ITAIA.TAX_PAYER_TYPE_ID

    From ICS_T_SERV_INST ITSI,
      
       ICS_T_AGGREGATE_INV_ACCOUNT ITAIA,
       ICS_L_ACCOUNT ILA
      
    Where ILA.INVOICE_ACCOUNT_EXTERNAL_ID = ITSI.INVOICE_ACCOUNT_ID(+)
       And ILA.INVOICE_ACCOUNT_ID = ITAIA.ARB_INV_ACCOUNT_ID(+)
       And ITAIA.ARB_INV_ACCOUNT_ID = 1188554
      
    Group By ILA.INVOICE_ACCOUNT_ID, ITSI.INVOICE_ACCOUNT_ID, ITSI.SERV_INST_NUMBER, ITAIA.CONTRACT_DATE, ITAIA.RISK_LEVEL_ID, ITAIA.TAX_PAYER_NUMBER,
       ITAIA.TAX_PAYER_TYPE_ID

     

     

    segunda-feira, 12 de maio de 2008 19:01
  • Olá Daniel,

     

    Não é o comando que está com problemas, mas sim o seu pacote. Vá no menu SSIS e desmarque a opção de trabalhar offline. Teste novamente

     

    [ ]s,

     

    Gustavo

     

    segunda-feira, 12 de maio de 2008 20:11
  • Desmarquei a opção mais o erro é outro.

     

    Warning: SSIS Warning Code DTS_W_MAXIMUMERRORCOUNTREACHED.  The Execution method succeeded, but the number of errors raised (5) reached the maximum allowed (1); resulting in failure. This occurs when the number of errors reaches the number specified in MaximumErrorCount. Change the MaximumErrorCount or fix the errors.

     

    segunda-feira, 12 de maio de 2008 20:24
  • Gustavo,

     

    ao abrir SQL Syntax erros do objeto OLE DB(QueryBuilder) é o seguinte:

     

    Error in WHERE clause near '('.
    Unable to parse query text.

     

    Porém quando executo o mesmo Select no Editor do Oracle funciona normalmente.

    segunda-feira, 12 de maio de 2008 20:58
  • Olá Daniel,

     

    Me parece que durante a carga dos dados do Oracle para o SQL Server ocorreram erros. Verifique se não há nenhuma incompatibilidade durante o mapeamento dos tipos do Oracle para o SQL Server (algum texto mapeado para inteiro, alguma data no formato string mapeado para smalldatetime de forma a gerar uma data inválida, etc)

     

    Estou vendo que ultimamente você tem tido muitas dúvidas sobre DTS e SSIS. Eu pediria que você postasse suas dúvidas no fórum de Business Intelligence. O DTS e o SSIS são ferramentas de ETL e possuem mais afinidade com Business Intelligence que o fórum de Queries, Procedures, Scripting & ANSI.

     

    Vou mover esses posts e os antigos para o fórum de Business Intelligence já que ele é mais adequado para lidar com esse tipo de dúvida.

     

    [ ]s,

     

    Gustavo

    segunda-feira, 12 de maio de 2008 21:03
  • OK.

     

    segunda-feira, 12 de maio de 2008 21:07
  • Gustavo,

     

    exatamente isso que vc falou, porém eu trabalho ele no Select.

     

     

    Esse é o ERRO que peguei na paleta de Progress

    [OLE DB Destination [16]] Error: There was an error with input column "INVOICE_ACCOUNT_ID" (149) on input "OLE DB Destination Input" (29). The column status returned was: "The value violated the integrity constraints for the column.".

     

    Como faço para converte um varchar2 para bigint.

     

    A minha tabela no SQLSERVER está como Bigint e o Oracle como Varchar2.

    segunda-feira, 12 de maio de 2008 21:18
  • Olá Daniel,

     

    Eu iria fazer mas algumas considerações, mas você mesmo já postou o erro antes que eu as fizesse. Me parece que ao importar esses dados há uma violação de chave primária. Se há essa violação não será possível importar esses registros.

     

    Se o Linked Server ainda estiver disponível, você pode fazer uma consulta para descobrir onde está a violação.

     

    [ ]s,

     

    Gustavo

     

    segunda-feira, 12 de maio de 2008 21:35
  • E sobre a conversão você possui alguma ideia?

    segunda-feira, 12 de maio de 2008 21:39
  • Sobre a integridade eu possuo 3 campos como chave, ou seja, os campos 1 e 2 podem até serem iguais, mais o campo 3 diferencia o registro como um todo.

     

    E o nome que ele critica é o do segundo campo se ele tivesse que criticar não deveria ser no campo 1?

     

    Desde já agradeço pela ajuda.

     

    segunda-feira, 12 de maio de 2008 21:48
  • Gustavo,

     

    para não ter dúvida retirei as chaves primárias da tabela mais o erro persiste.

     

    Code Snippet

    [OLE DB Destination [16]] Error: SSIS Error Code DTS_E_OLEDBERROR.  An OLE DB error has occurred. Error code: 0x80040E21. An OLE DB record is available.  Source: "Microsoft SQL Native Client"  Hresult: 0x80040E21  Description: "Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.".

     

     

    terça-feira, 13 de maio de 2008 11:39
  • Amigos,

     

    identifiquei o problema. O que estava acontecendo é que após retirar a chave primária esqueci de marcar o campo Allow null, ou seja, ele não estava aceitando valores null para os campo que eu tinha considerado chave e retirado posteriormente.

     

    Desde já agradeço pela ajuda

    terça-feira, 13 de maio de 2008 12:41