I have a problem with running SQL*Plus in the bash. Here is my code
#!/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
I download the insert statements from our intranet, put it into sql file and run it through SQL*Plus. This is working fine. My problem is that when I save the file script.sql my encoding goes wrong. All special characters(like íášč) are broken and that's causing inserting wrong characters into my DB. Encoding of that file is UTF-8, also UTF-8 is set on the XSQL page on our intranet. So I really don't know where could be a problem.
And also any advices regarding to my script are welcomed, I am total newbie in Linux scripting:-)
Ok, the problem wasn't in the file (encoding was UTF-8 as it should be) but in the setting of Oracle NLS_LANG environmental variable. So solution was putting this line before executing SQL*Plus script
NLS_LANG="CZECH_CZECH REPUBLIC.UTF8" export NLS_LANG
You may need to convert your inserts to a ISO8859 code page. Check the encoding in use on your Oracle server. The encoding should look like 'WE8ISO8859P1' or something like that, which will tell the ISO code page in use.
You can use iconv or something similar to convert your file from the UTF-8 encoding to the ISO8859 one, then try running it through SQL*Plus.