AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 60067
Accepted
qxotk
qxotk
Asked: 2014-03-04 13:32:23 +0800 CST2014-03-04 13:32:23 +0800 CST 2014-03-04 13:32:23 +0800 CST

Por que o SSIS Oracle Source da Attunity retorna DT_WSTR para a coluna Oracle CHAR(1)?

  • 772

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?

oracle ssis
  • 1 1 respostas
  • 1905 Views

1 respostas

  • Voted
  1. Best Answer
    qxotk
    2014-03-12T18:37:52+08:002014-03-12T18:37:52+08:00

    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:

    Considere o tamanho dos caracteres ao especificar o comprimento da coluna para tipos de dados de caracteres. Você deve considerar esse problema ao estimar o espaço para tabelas com colunas que contêm dados de caracteres.

    A semântica de comprimento dos tipos de dados de caractere pode ser medida em bytes ou caracteres.

    A semântica de byte trata strings como uma sequência de bytes. Este é o padrão para tipos de dados de caracteres.

    A semântica de caracteres trata strings como uma sequência de caracteres. Um caractere é tecnicamente um ponto de código do conjunto de caracteres do banco de dados.

    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 caractereCHAR(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:

    CARACTERES

    Você usa o tipo de dados CHAR para armazenar dados de caracteres de comprimento fixo. Como os dados são representados internamente depende do conjunto de caracteres do banco de dados. O tipo de dados CHAR recebe um parâmetro opcional que permite especificar um tamanho máximo de até 32767 bytes. Você pode especificar o tamanho em termos de bytes ou caracteres, onde cada caractere contém um ou mais bytes, dependendo da codificação do conjunto de caracteres. A sintaxe segue:

    CHAR[(tamanho_máximo [CHAR | BYTE] )]

    • 4

relate perguntas

  • Backups de banco de dados no Oracle - Exportar o banco de dados ou usar outras ferramentas?

  • ORDER BY usando prioridades personalizadas para colunas de texto

  • Interface sqlplus confortável? [fechado]

  • Como encontrar as instruções SQL mais recentes no banco de dados?

  • Como posso consultar nomes usando expressões regulares?

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve