Вставка символов Юникод в Sql - PullRequest
2 голосов
/ 28 октября 2010

Я пытаюсь получить строки Unicode в базу данных SQL * Plus: Release 10.2.0.2.0, но у меня возникают трудности. Если я использую SQLPlus и копирую и вставляю оператор вставки в базу данных, любые специальные символы вставляются как? или что-то типа того. Затем я пытаюсь вызвать файл sql, который был закодирован в UTF-8, и результат тот же. Кто-нибудь знает, как получить данные Unicode в базу данных?

Может кто-нибудь помочь. Как я могу установить опцию NLS_LANG в sqlplus

Ответы [ 4 ]

1 голос
/ 28 октября 2010

SQL * Plus - это не база данных, а интерфейс на основе командной строки для базы данных SQL или PL / SQL. Командная строка обычно поддерживает только символы в кодировке ANSI или ASCI. Поэтому, когда вы пытаетесь вставить команду, программа (SQL * Plus) просто заменяет текст, который не может понять, как кодировать с помощью «?». Метки. Возможно, вам придется переключиться на другое клиентское приложение, чтобы использовать UTF-8

0 голосов
/ 26 ноября 2018

В моем случае проблема была не в sqlplus, а в среде, в которой была запущена база данных.После того, как я установил

NLS_LANG=RUSSIAN_RUSSIA.UTF8

, я мог вставлять символы Юникода без каких-либо искажений.Для того чтобы это вступило в силу, могут потребоваться некоторые перезагрузки (дБ или ОС или оба).Я запускаю базу данных Oracle XE в докере, поэтому мне пришлось добавить -e NLS_LANG=RUSSIAN_RUSSIA.UTF8 к команде docker run..., как показано ниже:

docker run -d --rm -p 49161:1521 --name db -e NLS_LANG=RUSSIAN_RUSSIA.UTF8 -e ORACLE_ALLOW_REMOTE=true wnameless/oracle-xe-11g
0 голосов
/ 09 февраля 2016

Установите переменную среды NLS_LANG, чтобы SQL * Plus понимал используемое вами представление символов.

http://www.sqlsnippets.com/en/topic-13434.html

0 голосов
/ 28 января 2014

попытаться использовать что-то вокруг этого утверждения

update pp.pp_employee t  
set t.first_name=UNISTR('АБДАЛЛА')   
where t.emp_id =  5451  ;
...