- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
R 的绝对初学者,因此请原谅任何明显的问题。
我正在尝试使用 Deducer 中的数据帧更新 MySQL 表(数据库“test”中的“exdata3”)。
我最初调用了数据库并在演绎器中使用了该表,对其运行一些查询,该查询存储在数据帧“data1”中。现在我想发送包含新列的“data1”并更新 MySQL 中的非空表 exdata3。
(将来我可能不会有新的列/行,但与 MySQL 中的相同列相比,数据框中现有的列可能具有不同的值,如果你知道我的意思的话)
MySQL 中的数据帧和表之间的区别在于数据帧中添加了“DiffHighLow”列(其中包含根据表中其他两个列计算的值)。
我在 64 位 Windows7 上使用 RODBC 在 R 和 MySQL 之间进行通信
我尝试了以下方法,但出现了以下错误。
<强>1。 > sqlSave( channel 、data1、exdata3、append=TRUE、rownames=“DiffHighLow”、colnames=TRUE、verbose=FALSE、更安全=TRUE、addPK=FALSE、“整数”、fast=TRUE、test=FALSE、nastring=NULL )
sqlSave 中出现错误( channel ,data1,exdata3,append = TRUE,rownames =“DiffHighLow”,: 找不到对象“exdata3”
2.> sqlSave( channel , data1, rownames = "DiffHighLow", addPK = TRUE)
sqlSave(channel, data1, rownames = "DiffHighLow", addPK = TRUE) 中出现错误: 42S21 1060 [MySQL][ODBC 5.3(w) 驱动程序][mysqld-5.0.41-community-nt]重复列名“diffhighlow”
[RODBC] 错误:无法 SQLExecDirect 'CREATE TABLE data1
(DiffHighLow
varchar(255) NOT NULL PRIMARY KEY,exdata3_id
整数, 日期
double ,打开
double ,高
double ,低
double ,关闭
double , shares_
整数,turnover_
double ,diffhighlow
double )'
第三。 > sqlUpdate( channel ,data1,“exdata3”)
sqlUpdate( channel 、data1、“exdata3”) 中出现错误: 数据框列 日期 开盘价 最高价 最低价 收盘价 股票_成交量_ diffhighlow 不在数据库表中
除其他事项外,我不明白为什么它无法识别数据库表中已存在的行名称(“DiffHighLow”除外)
请指教。我已经在 SO 上搜索了很多这样的问题,并尝试了已经发布的各种解决方案(看起来与我的查询最相似),但它们似乎都不起作用。
最佳答案
如果我理解正确的话,您可以将表 exdata3
的内容从 MySQL 数据库加载到 R 中,并通过添加新列 DiffHighLow
等方式对其进行修改>,现在您想将其保存回 MySQL 数据库。如果这就是您想要做的,那么这会起作用:
# this just sets up the example
set.seed(1) # for reproducible example
df <- data.frame(Open=rnorm(50), Low=rnorm(50), High=rnorm(50), Close=rnorm(50))
library(RODBC)
channel <- odbcConnect(dsn="MySQL", case="nochange")
sqlSave(channel,df,"exdata3", rownames=F)
data1 <- sqlQuery(channel,"select * from exdata3")
data1 <- transform(data1,DiffHighLow=High-Low)
# you start here
sqlQuery(channel,"drop table exdata3")
sqlSave(channel,data1,"exdata3")
result <- sqlQuery(channel,"select * from exdata3")
head(result)
基本问题是 sqlSave(...)
要求 MySQL 表根本不存在(在这种情况下将创建该表),>或者它的列与数据库中的列完全映射。您无法使用 sqlSave(...)
添加列。因此,此代码只是删除 exdata3
的原始版本,然后从 data1
中的数据创建一个新副本。最后一行只是读回表格以证明它有效。
您的代码存在一些问题。
第一次尝试失败,因为您传递的是变量名 exdata3
,而不是字符串 "exdata3"
。您的 R 环境中没有名为 exdata3
的变量,因此出现错误:“找不到对象 'exdata3'”。
第二次尝试失败,因为您告诉 ODBC 驱动程序将数据帧的行名称保存在名为 diffhighlow
的列中,但 data1
中已经有一列该名称,因此驱动程序正在尝试创建具有相同名称的两列。
第三次尝试失败,因为 exdata3
中的列未映射到 data1
中的列。
关于mysql - 如何使用 RODBC 将数据帧添加到 mysql 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25663247/
简单的 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
我是一名优秀的程序员,十分优秀!