Usando o SSIS 2012 e o Conector Microsoft SSIS para Oracle da Attunity v. 2.0.
Quando adiciono um Oracle Source para uma tabela específica, ele está definindo o tipo de dados para um campo Oracle CHAR(1) como DT_WSTR.
Eu li a documentação e pesquisei na web, e espero que um Oracle CHAR(1) seja DT_STR e não DT_WSTR.
Alguém sabe por que isso está acontecendo?
Além disso, quando tento definir o tipo de dados em meu Oracle Source como DT_STR para a coluna, a configuração parece não ser mantida.
Alguém encontra isso e você tem alguma sugestão de como contornar isso?
Acredito que descobri isso, mas se alguém tiver uma documentação ou experiência melhor, poste uma resposta separada e eu votarei e aceitarei.
O que descobri é que o Oracle PL/SQL tem um meio de expressar os conceitos de "semântica de bytes" e "semântica de caracteres" em PL/SQL ao declarar tipos de dados de caracteres.
Consulte o cabeçalho Semântica de comprimento para tipos de dados de caractere nesta página da Web de documentação da Oracle , onde afirma:
Ao revisar meu banco de dados de origem Oracle, agora noto que os campos que foram importados como DT_WSTR são de fato declarados usando a sintaxe PL/SQL
xxxCHAR(n CHAR)
- onde o segundo "CHAR" está declarando explicitamente a semântica do caractere - em vez do byte padrão semântica.Assim, em meu banco de dados Oracle, acredito que preciso tratar uma coluna com tipo de dados de banco de dados como um tipo de dados de caractere
CHAR(1 CHAR)
usando a semântica de caracteres, e acredito que isso signifique que o campo pode acomodar 1 caractere independente do comprimento de bytes do conjunto de caracteres em uso .Considerando o exposto acima, o SSIS (por meio do Microsoft Oracle Connector da Attunity) promoverá tipos de dados não NCHAR/NVARCHAR para DT_WSTR (em oposição a DT_STR).
E, seguindo o exposto acima, precisarei dos tipos de dados de banco de dados NCHAR e NVARCHAR SQL Server ao importar colunas expressas usando a semântica de caracteres .
Depois de fazer isso, não precisarei mais converter tipos de dados DT_WSTR em DT_STR em meus fluxos de dados SSIS (o que estava se tornando bastante tedioso).
Observe que eu já estava usando NCHAR e NVARCHAR para campos declarados como tal no lado do Oracle - esperando fornecer o armazenamento adequado para esses tipos no lado do SQL Server.
ATUALIZAÇÃO : Aqui está a página da web docs.oracle.com que mostra a sintaxe que descrevo da seguinte forma: