- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的数据库表大致如下所示:
+-----+-------+--------------------+-----------+----------+
| ID1 | ID2 | FilePath1 | FilePath2 | Status |
+-----+-------+--------------------+-----------+----------+
| 1 | Test1 | MyFolder\R\Folder1 | NULL | Open |
| 2 | Test2 | MyFolder\R\Folder2 | NULL | Open |
| 3 | Test3 | MyFolder\R\Folder3 | NULL | Finished |
| 4 | Test4 | MyFolder\R\Folder4 | NULL | Finished |
+-----+-------+--------------------+-----------+----------+
FilePath2
包中的
Status
使用R更改
sqlUpdate()
和
RODBC
。因此,我尝试以下操作:
db.df <- data.frame(ID1=1, ID2='Test1',
FilePath2='MyFolder\R\Folder5', Status='Finished',
stringsAsFactors=FALSE)
sqlUpdate(myconn, db.df, tablename='mytable', index='ID2', verbose=TRUE)
db.df
是一个数据框,其中的行和列名与数据库表中的行和列名相对应(但是,我省略了一些列,在这种情况下为
FilePath1
,如果可能的话,我也希望省去
ID1
) 。我的目标是获得以下信息:
+-----+-------+--------------------+--------------------+----------+
| ID1 | ID2 | FilePath1 | FilePath2 | Status |
+-----+-------+--------------------+--------------------+----------+
| 1 | Test1 | MyFolder\R\Folder1 | MyFolder\R\Folder5 | Finished |
| 2 | Test2 | MyFolder\R\Folder2 | NULL | Open |
| 3 | Test3 | MyFolder\R\Folder3 | NULL | Finished |
| 4 | Test4 | MyFolder\R\Folder4 | NULL | Finished |
+-----+-------+--------------------+--------------------+----------+
Error in sqlUpdate(myconn, db.df, tablename = 'mytable', index = 'ID2', :
index column(s) ID2 not in database table
out.path <- 'MyFolder\\\\R\\\\Folder5'
update.query <- paste("UPDATE mytable ",
"SET FilePath2='", out.path, "', Status='Finished' ",
"WHERE ID2='Test1'", sep="")
dummy <- sqlQuery(myconn, update.query)
sqlUpdate
有什么问题,所以我希望有人能对此有所了解。
最佳答案
使用sqlUpdate
更新MySQL中的表时,我遇到了类似的问题。我通过在R-MySQL连接中设置case
属性来修复它。
这是详细信息:
在MySQL中:
create table myTable (
myName1 INT NOT NULL PRIMARY KEY,
myName2 VARCHAR(10) NOT NULL,
);
insert into myTable values(111, 'Test1')
insert into myTable values(222, 'Test2')
myDF <- data.frame(myName1 = 111, myName2 = 'Test3')
sqlUpdate(myConn, myDF, tablename='myTable', index = 'myName1', verbose=TRUE)
#> Error in sqlUpdate(myConn, myDF, tablename='myTable', index = 'myName1', verbose=TRUE) :
index column(s) myName1 not in data frame
> attr(myConn, "case")
[1] "tolower"
myName1
更改为
myname1
内的
sqlUpdate
,以使其与给定索引的
myName1
不匹配。
index = 'myname1'
更改了调用,它将无法正常工作。将报告
index column(s) myName1 not in database table
错误。因为在MySQL表中,列名是myName。
attr(myConn, "case") <- 'nochange'
debugonce(sqlUpdate)
提供:
cnames <- colnames(dat)
cnames <- mangleColNames(cnames)
cnames <- switch(attr(channel, "case"), nochange = cnames,
toupper = toupper(cnames), tolower = tolower(cnames))
cdata <- sqlColumns(channel, tablename)
coldata <- cdata[c(4L, 5L, 7L, 9L)]
if (is.character(index)) {
intable <- index %in% coldata[, 1L]
if (any(!intable))
stop("index column(s) ", paste(index[!intable], collapse = " "),
" not in database table")
intable <- index %in% cnames
if (any(!intable))
stop("index column(s) ", paste(index[!intable], collapse = " "),
" not in data frame")
indexcols <- index
}
intable
和
cname
的
coldata
调用。
关于sql - RODBC:sqlUpdate()无法识别索引列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11948721/
简单的 R 脚本 library(RODBC) odbChannel Rscript ./RODBC_SIMPLE_TEST.r Error in odbcQuery(channel, query,
我设置了一个 ODBC 连接到 Netezza(SQL 数据库)。连接很好。但是,R 默认只拉出 256 行,并且限制了它可以拉出的行数。 如果我在 Netezza 中运行查询,它将返回总行数 (30
我正在使用提供的 ODBC 驱动程序和 RODBC 测试新的数据库系统。包裹。 我遇到的问题是,仅在几次查询之后(都在 2~3 分钟或更短的时间内),R 不再将连接识别为有效。 具体来说,它只是一个C
在数据库中,我存储了包含特殊字符(例如“§”)的字符串。使用命令 查询() 从包 RODBC“§”被翻译成“?”。对于法语单词中的“'”等字符也是如此。 当然我不能替换每一个“?”通过查询后的特殊字符
我在使用RODBC的sqlSave创建表时遇到了麻烦(或更准确地说,是将数据写入到创建的表中)。 这与现有的sqlSave问题/答案不同,因为 他们遇到的问题是不同的,我可以创建表,而他们不能,而 我
关于此 R 代码的问题: library(RODBC) ch <- tryCatch(odbcConnect("RTEST"), warning=function(w){print("FAIL!
我正在尝试使用 R/RODBC 对 MSSQL 2008 R2 数据库的结构进行编目。我已经设置了一个 DSN,通过 R 连接并使用了 sqlTables()命令,但这只是获取“系统数据库”信息。 l
我有一个返回 varbinary 输出参数的存储过程。我想从 R 调用它并捕获返回变量。我试过: qq <- "declare @mm varbinary(max); exec spTrain_df_
我有一个返回 varbinary 输出参数的存储过程。我想从 R 调用它并捕获返回变量。我试过: qq <- "declare @mm varbinary(max); exec spTrain_df_
我有一个关于使用 sqlSave 的问题。 R 如何将数据框中的 RODBC 数据映射到数据库表列? 如果我有一个包含 X 和 Y 列的表以及一个包含 X 和 Y 列的数据框,RODBC 会将 X 放
这是我第一次尝试在本地 MySQL 数据库和 R 之间来回传递数据。也就是说,我在数据库中创建了一个表并想将数据插入其中。目前,它是一个空白表(使用 MySQL 查询浏览器创建)并且有一个 PK 集。
我正在使用 RODBC 从 MySql Server 获取数据到 R。 所以在数据库的一列中是一个字符向量 SELECT MAX(CHAR_LENGTH(column)) FROM reqtable;
我正在使用 RODBC 包从 R 连接到 Oracle 数据库,但我没有成功合并来自不同数据库的表而没有“下载”这些表(我不想下载它们,因为它们太大了!)。我想使用类似的东西: DBa=odbcCon
我正在尝试将数据从 Access 数据库导入 R。我想导入某些专业的 CIP 代码,其中可能包含前导零。 RODBC 正在将 CIP 代码转换为数字值,即使它在 Access 中被定义为文本。任何人都
相关 https://stackoverflow.com/a/33284035/3358272 ,我发现从 SQL Server (2014) 中提取数据的行为不一致。 library(RODBC)
我想了解 RODBC 如何确定新创建的 (Access) 表的列类型? sqlSave 的 R 文档非常神秘:“类型是通过咨询参数 varTypes 和 typeInfo 来选择的”。并且没有这个论点
我的数据库表大致如下所示: +-----+-------+--------------------+-----------+----------+ | ID1 | ID2 | FilePath1
所以这很奇怪。如果结果集足够大,RODBC 似乎会删除 DateTime SQL 列的时间部分。 (查询是针对 SQL Server 2012 机器运行的,是的,当我在 SQL Server 端运行它
我正在尝试使用R中的SQLite连接RODBC数据库。RODBC可以连接到数据库,但不能使用sqlTables获取数据库中的表列表,该列表返回"0 rows"。该数据库有20个表。 系统:R 3.1.
我想使用 R 脚本将数据框输入到数据库中的现有表中,并且我希望数据库中的表具有顺序主键。我的问题是 RODBC 似乎不允许主键约束。 这是创建我想要的表的 SQL: CREATE TABLE [dbo
我是一名优秀的程序员,十分优秀!