Запуск SQL * Plus с bash приводит к неправильной кодировке - PullRequest
2 голосов
/ 14 марта 2012

У меня проблема с запуском SQL * Plus в bash. Вот мой код

#!/bin/bash

 curl http://192.168.168.165:8080/api_test/xsql/f_exp_order_1016.xsql > script.sql
 sqlplus /nolog << ENDL
 connect user/password 
 set sqlblanklines on
 start script.sql
 exit
 <<ENDL

Я загружаю операторы вставки из нашей интрасети, помещаю их в файл sql и запускаю через SQL * Plus. Это работает нормально. Единственная проблема заключается в том, что кодировка файла script.sql выглядит следующим образом application/x-empty; charset=binary (определяется через файл -bi). Таким образом, это вызывает вставку неправильных символов в мою базу данных, что я действительно не хочу.

Итак, не могли бы вы сказать мне, как мне изменить кодировку файла без потери каких-либо данных? А также приветствуются любые советы, касающиеся моего сценария, я новичок в сценариях Linux: -)

Я также пытался изменить кодировку с iconv, но это не помогло.

UPDATE

Не знаю, почему, но я удалил файл, несколько раз запустил скрипт, и кодировка неожиданно UTF-8, но символы все еще разбиты как в файле, так и в БД, поэтому ничего не решалось

Ответы [ 2 ]

1 голос
/ 16 марта 2012

Хорошо, проблема была не в файле (кодировкой была UTF-8, как должно быть), а в установке переменной среды Oracle NLS_LANG.Поэтому решение заключалось в том, чтобы поместить эту строку перед выполнением сценария SQL * Plus

NLS_LANG="CZECH_CZECH REPUBLIC.UTF8" export NLS_LANG

0 голосов
/ 14 марта 2012

Попробуйте использовать переключатель --data-ascii для команды curl.

...