特殊字符将转换为?使用R插入Oracle数据库时

时间:2018-09-09 01:48:38

标签: r dbi roracle

我正在使用ROracle软件包和DBI软件包连接到oracle数据库。当我尝试执行具有特殊字符的插入语句时,特殊字符将转换为非特殊字符。 (我确定我不知道有针对“特殊”和“非特殊”的更正确的术语。)

首先,我进行以下连接:

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

然后,在已经创建的表上执行以下插入语句。列A具有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中执行insert语句,没有问题,因此R似乎有问题。我们将提供任何帮助。

1 个答案:

答案 0 :(得分:1)

此问题通过在创建连接之前运行Sys.setenv(NLS_LANG = "AMERICAN_AMERICA.AL32UTF8")来解决。