Usuário com melhor resposta
Executar Left Join no Oracle via SSIS

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.
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
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 SnippetSelect 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_IDFrom 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 -
-
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.
-
-
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
-
-
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.
-
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
-
-
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.
-
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.".
-
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