RODBC::sqlQuery检测隐藏字符
在使用RODBC查询Oracle数据库时,我遇到了隐藏字符的问题。首先,我的代码: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复制并粘贴到一个文本文件中。然
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)