A execução do SQL * Plus com o bash causa codificação incorreta

1

Eu tenho um problema com a execução do SQL * Plus no bash. Aqui está o meu código

#!/bin/bash

#curl http://192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql > script.sql
wget -O script.sql 192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql
set NLS_LANG=_.UTF8
sqlplus /nolog << ENDL
connect login/password 
set sqlblanklines on
start script.sql
exit
<<endl

Eu faço o download das instruções de inserção da nossa intranet, coloco no arquivo sql e o executo através do SQL * Plus. Isso está funcionando bem. Meu problema é que quando eu salvo o arquivo script.sql minha codificação dá errado. Todos os caracteres especiais (como o símbolo) estão quebrados e isso está causando a inserção de caracteres errados no meu banco de dados. Codificação desse arquivo é UTF-8, também UTF-8 é definido na página XSQL em nossa intranet. Então eu realmente não sei onde poderia ser um problema.

E também quaisquer conselhos sobre o meu script são bem-vindos, eu sou totalmente novato no script Linux: -)

    
por Petr Mensik 15.03.2012 / 09:35

2 respostas

4

Ok, o problema não estava no arquivo (a codificação era UTF-8 como deveria ser), mas na configuração da variável de ambiente NLS_LANG do Oracle. Então, a solução foi colocar essa linha antes de executar o script SQL * Plus

NLS_LANG="CZECH_CZECH REPUBLIC.UTF8" export NLS_LANG

    
por 16.03.2012 / 14:38
0

Você pode precisar converter suas inserções em uma página de código ISO8859. Verifique a codificação em uso no seu servidor Oracle. A codificação deve se parecer com 'WE8ISO8859P1' ou algo parecido, que informará a página de código ISO em uso.

Você pode usar íconev ou algo semelhante para converter seu arquivo da codificação UTF-8 para a codificação ISO8859 , em seguida, tente executá-lo através do SQL * Plus.

    
por 15.03.2012 / 12:30