Olá Pessoal,
Eu fiz uma carga de dados através do SQL*Loader, de um esquema para outro (no mesmo banco), no esquema de origem os caracteres acentuados são mostrados corretamente, mas no esquema de destino os caracteres acentuados são mostrados com pontos de interrogação ao invés dos acentos.
Alguém sabe me informar porque isso acontece???
Att,
Os caracteres acentuados são mostrados com interrogação.
- stcoutinho
- Moderador
- Mensagens: 850
- Registrado em: Qua, 11 Mai 2011 5:15 pm
- Localização: são Paulo - SP
Oi Wbarrence !
Pode se tratar da configuração de NLS (idioma) na sessão corrente que você está usando para executar o SQL*LOADER.
Alguns pontos para você refletir:
- Você está rodando o SQLLOADER no servidor de banco de dados ou na sua máquina local?
- O SQLLOADER precisa de um arquivo texto com os dados. Entendo que de alguma forma você gerou os dados do schema de origem em um arquivo texto. Você chegou a abrir o arquivo TXT gerado, com os dados do "schema normal"?
- A acentuação das palavras no arquivo texto estão OK?
- O local onde as operações de UNLOAD e o LOADER são exatamente os mesmos? Ou seja, você executa tudo em uma mesma máquina?
Sugiro o seguinte plano de ação:
A)Conecte-se na máquina onde está executando o SQL*LOADER;
B) Abra uma sessão de SQL*PLUS (tem que ser o SQL*PLUS) com o usuário de banco que você está usando no SQL*LOADER;
C) Execute o comando
Analise então o resultado do comando acima. Se indicar que NLS_LANGUAGE é diferente de BRAZILIAN (ex: AMERICAN ENGLISH), pode ser que este seja o motivo de seus caracteres acentuados não serem reconhecidos.
Você então precisa configurar a sessão de banco de dados para que esta funcione sempre com o idioma português. Você poderia - por exemplo - criar uma TRIGGER de LOGON para o schema de destino, que executaria um
Isso iria assegurar que independente do client onde você executar o SQLLOADER, ele sempre adotará este idioma na sessão que for aberta.
Não sei se consegui esclarecer sua dúvida. Por favor, fique à vontade para postar outras dúvidas, se não for este o caso.
Abraços,
Sergio Coutinho
Pode se tratar da configuração de NLS (idioma) na sessão corrente que você está usando para executar o SQL*LOADER.
Alguns pontos para você refletir:
- Você está rodando o SQLLOADER no servidor de banco de dados ou na sua máquina local?
- O SQLLOADER precisa de um arquivo texto com os dados. Entendo que de alguma forma você gerou os dados do schema de origem em um arquivo texto. Você chegou a abrir o arquivo TXT gerado, com os dados do "schema normal"?
- A acentuação das palavras no arquivo texto estão OK?
- O local onde as operações de UNLOAD e o LOADER são exatamente os mesmos? Ou seja, você executa tudo em uma mesma máquina?
Sugiro o seguinte plano de ação:
A)Conecte-se na máquina onde está executando o SQL*LOADER;
B) Abra uma sessão de SQL*PLUS (tem que ser o SQL*PLUS) com o usuário de banco que você está usando no SQL*LOADER;
C) Execute o comando
SELECT * FROM NLS_SESSION_PARAMETERS;
Você então precisa configurar a sessão de banco de dados para que esta funcione sempre com o idioma português. Você poderia - por exemplo - criar uma TRIGGER de LOGON para o schema de destino, que executaria um
ALTER SESSION SET NLS_LANGUAGE='BRAZILIAN PORTUGUESE'
Não sei se consegui esclarecer sua dúvida. Por favor, fique à vontade para postar outras dúvidas, se não for este o caso.
Abraços,
Sergio Coutinho
-
- Rank: Estagiário Sênior
- Mensagens: 10
- Registrado em: Ter, 28 Ago 2012 4:33 pm
- Localização: São Paulo
- Contato:
Use variáveis de ambiente NLS_LANG para configurar corretamente, pois ele deve estar entrando como ASCII (7 bits), use export para Linux e set para Windows.
Se o dado de entrada estiver codificado em ambiente Windows:
Em ISO-8859-P1 (Unix):
Em UTF-8:
Sds,
Marlon Costa
http://www.marlonscdba.com
Se o dado de entrada estiver codificado em ambiente Windows:
export/set NLS_LANG='AMERICAN_AMERICA.WE8MSWIN1252'
export/set NLS_LANG='AMERICAN_AMERICA.WE8ISO8859P1'
export/set NLS_LANG='AMERICAN_AMERICA.AL32UTF8'
Marlon Costa
http://www.marlonscdba.com
- fbifabio
- Moderador
- Mensagens: 199
- Registrado em: Ter, 22 Fev 2011 1:51 pm
- Localização: São Paulo - SP
- Contato:
Fábio Prado
www.fabioprado.net
www.fabioprado.net
Também é possível especificar o character set dentro do arquivo de controle do sql loader. Veja exemplo no artigo abaixo:
http://www.fabioprado.net/2010/10/carga ... o-sql.html
[]s
Fábio Prado
http://www.fabioprado.net/2010/10/carga ... o-sql.html
[]s
Fábio Prado
-
- Informação
-
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 5 visitantes