Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
RODBC::sqlQuery检测隐藏字符_R_Oracle_Rodbc - Fatal编程技术网

RODBC::sqlQuery检测隐藏字符

RODBC::sqlQuery检测隐藏字符,r,oracle,rodbc,R,Oracle,Rodbc,在使用RODBC查询Oracle数据库时,我遇到了隐藏字符的问题。首先,我的代码: library(RODBC) con <- odbcConect('dsn', uid = 'user', pwd = 'pass') query <- read_file('Query.sql') query <- gsub('\n', ' ',gsub('\t', ' ',gsub('\r' ,' ', query))) 及 最初,我将这个查询从outlook复制并粘贴到一个文本文件中。然

在使用RODBC查询Oracle数据库时,我遇到了隐藏字符的问题。首先,我的代码:

library(RODBC)
con <- odbcConect('dsn', uid = 'user', pwd = 'pass')
query <- read_file('Query.sql')
query <- gsub('\n', ' ',gsub('\t', ' ',gsub('\r' ,' ', query)))

最初,我将这个查询从outlook复制并粘贴到一个文本文件中。然后我重新输入了整个内容,希望能去掉隐藏的字符。现在,我正在使用一个gsub字符串手动删除隐藏字符,但仍然收到错误。通过“查询”向量查看,我没有看到任何隐藏字符,因此我不确定问题来自何处

我已经读过,RODBC在SQL查询中很难进行聚合,但是这个查询只使用左连接、大小写和WHERE作为更高级别的关键字


感谢您的帮助

也许可以使用将所有内容转换为ASCII

如果查询本身有不好的字符,我会手动开始一个简单的SELECT查询,只包含一列;从一个新的文本文件开始,在该文件中,您知道编码的性能良好。确保查询在OracleDeveloper中工作(或不依赖于R的东西)。然后确保RODBC连接与该简单查询一起工作

假设您必须使用非从头开始编写的sql文件,您可能希望朝着这个方向努力

content   <- readr::read_file("Query.sql")
cleaned   <- base::iconv(x=content, from="latin1", to="ASCII//TRANSLIT", sub="&")

if( grepl("&", cleaned) ) {
  cat(cleaned)
  stop("The query might contain non-ASCII characters with no good non-ASCII equivalent.  Check the console for the '&' substitution character.")
}

con <- odbcConect('dsn', uid = 'user', pwd = 'pass')
df  <- sqlQuery(con, query = returned_value)

内容您的
查询.sql
文件是否包含任何“智能引号”(如
“这些”
)或非中断空格?没有我能找到的内容此时,我仍在尝试将数据拉入数据框。我使用记事本++将Query.sql转换为ASCII并启用了“显示所有字符”。我唯一得到的是CF和LR。我误解了。我重写了代码以清理查询
[1] "HY000 911 [Oracle][ODBC][Ora]ORA-00911: invalid character\n" 
[2] "[RODBC] ERROR: Could not SQLExecDirect...
content   <- readr::read_file("Query.sql")
cleaned   <- base::iconv(x=content, from="latin1", to="ASCII//TRANSLIT", sub="&")

if( grepl("&", cleaned) ) {
  cat(cleaned)
  stop("The query might contain non-ASCII characters with no good non-ASCII equivalent.  Check the console for the '&' substitution character.")
}

con <- odbcConect('dsn', uid = 'user', pwd = 'pass')
df  <- sqlQuery(con, query = returned_value)