Специальные символы конвертируются в? При вставке в базу данных Oracle с использованием R - PullRequest
0 голосов
/ 09 сентября 2018

Я устанавливаю соединение с базой данных oracle с использованием пакета ROracle и пакета DBI. Когда я пытаюсь выполнить оператор вставки, содержащий специальные символы, специальные символы преобразуются в не специальные символы. (Я уверен, что есть более правильные термины для «специальных» и «не специальных», о которых я не знаю).

Сначала я установил следующее соединение:

connection <- dbConnect(
  dbDriver("Oracle"),
  username = "xxxxx",
  password = "xxxxx",
  dbname = "xxxx"
  )

Затем я выполняю следующую инструкцию вставки для таблицы, которую я уже создал. Столбец А имеет тип nvarchar2.

dbSendQuery(connection, "insert into TEST_TABLE (A) values('£')")

Вот что возвращается:

Statement:            insert into TEST_TABLE (A) values('#') 
Rows affected:        1 
Row count:            0 
Select statement:     FALSE 
Statement completed:  TRUE 
OCI prefetch:         FALSE 
Bulk read:            1000 
Bulk write:           1000 

Как видите, символ «£» заменяется на «#». Я могу выполнить оператор вставки непосредственно в PL / SQL, и это не проблема, поэтому, похоже, проблема с R. Любая помощь приветствуется.

1 Ответ

0 голосов
/ 10 августа 2019

Эта проблема была решена путем запуска Sys.setenv(NLS_LANG = "AMERICAN_AMERICA.AL32UTF8") перед созданием соединения.

...