A extração de tabelas localizadas em um esquema do banco de dados diferente daquele do usuário logado apenas é possível no extrator JDBC por meio de um prefixo do nome da tabela. O prefixo é separado por um ponto do nome da tabela, no atributo tablename e nos vários elementos da configuração da tabela (jdbc_tableconfiguration.dtd).
Exemplo
<doctable name="customer" tablename="USER1.CUSTOMER ">
Como o ponto também pode ocorrer como um caractere especial em nomes de esquemas e tabelas, cada ponto que faz parte do nome do esquema ou da tabela deve ser mascarado com uma barra invertida \. Para reconhecer as barras invertidas que fazem parte do nome, elas devem ser mascaradas por uma ocorrência dupla.
Os nomes de esquemas e tabelas podem ser inequivocamente diferenciados nas seguintes configurações de exemplo.
Nome do esquema |
Nome da tabela |
Sintaxe para o atributo tablename |
---|---|---|
USER |
1.CUSTOMER |
USER.1\.CUSTOMER |
USER.1.1 |
ORDER.DE |
USER\.1\.1.ORDER\.DE |
USER. |
ORDER |
USER\..ORDER |
USER\2 |
ORDER.DE |
USER\\2.ORDER\.DE |
USER\.1 |
ORDER\.44 |
USER\\\.1.ORDER\\\.44 |
USER |
1.TABLE.1 |
USER.1.TABLE.1 |
Se mais de um ponto ocorrer em um esquema e nome de tabela (consulte o exemplo na última linha da tabela) sem ser mascarado pela barra invertida, o primeiro ponto será interpretado como um separador de esquemas e os outros pontos serão vistos como partes do nome da tabela. Isso corresponde ao comportamento da versão anterior à 9.9 e é mantido por motivos de compatibilidade. Ainda é recomendado para mascarar todos os pontos, exceto o separador de esquema com uma barra invertida de prefixo.
Não é permitido mascarar qualquer outro caractere que não seja o ponto ou a barra invertida.
Ao definir chaves estrangeiras, é importante observar que o valor no atributo XML <fktablename> refere-se ao atributo XML <name> e não a <tablename>.
Exemplo
<jdbc_tableconfiguration>
<configuration name="Example">
<docspec>
<doctable name="USER.1.CUSTOMER" tablename="USER\.1.CUSTOMER">
<condition fieldname="SEQUENCE" logicaloperator="in">
<value>001</value>
<value>099</value>
</condition>
<pkfield name="SEQUENCE"/>
</doctable>
</docspec>
<table name="FK_TABLE">
<pkfield name="SEQUENCE"
fktablename="USER.1.CUSTOMER" fkfieldname="SEQUENCE"/>
<fieldtoread name="FK_COLUMN1"/>
<fieldtoread name="FK_COLUMN2"/>
</table>
</configuration>
</jdbc_tableconfiguration>
Se tablename estiver ausente, o conteúdo do atributo name é usado como nome da tabela para acessar o banco de dados. Os dois valores de atributo para os atributos name e fktablename são interpretados como cadeias de caracteres puras e, portanto, não são avaliadas em termos de separadores e caracteres de mascaramento.
Por exemplo, se a tabela for especificada apenas com o atributo name, da seguinte forma:
<doctable name="USER\.CUSTOMER">.
isso significa que
<doctable name="USER\.CUSTOMER" tablename="USER\.CUSTOMER">.
Assim, o extrator extrairia a tabela USER.CUSTOMER do banco de dados.
Se caracteres especiais ocorrerem no nome da tabela, recomendamos especificar sempre o nome da tabela com o atributo tablename.