RMYSQL 可写错误
RMYSQL Writetable error
我有以下 R 数据框
Sl NO Name Marks
1 A 15
2 B 20
3 C 25
我有一个mysqltable如下。 (Score.table)
No CandidateName Score
1 AA 1
2 BB 2
3 CC 3
我已经使用此代码
将我的数据框写入Score.table
username='username'
password='userpass'
dbname='cdb'
hostname='***.***.***.***'
cdbconnection = dbConnect(MySQL(), user=username, password=userpass,
dbname=dbname, host=hostname)
接下来我们将dataframe写入table如下
score.table<-'score.table'
dbWriteTable(cdbconn, score.table, dataframe, append =F, overwrite=T).
代码运行,输出为 TRUE。
但是,当我检查 SQL table 时,新值并未覆盖现有值。
我请求有人帮助我。该代码有效。我重新安装了RMySQL包,重新运行,结果还是一样。
没有发生更新表明 RMySQL
包无法成功地将数据框中的任何行映射到 table 中已有的记录。所以这意味着您对 dbWriteTable
的调用有问题。我看到的两个潜在问题是您没有为 field.types
或 row.names
赋值。考虑进行以下调用:
score.table <- 'score.table'
dbWriteTable(cdbconn, score.table, dataframe,
field.types=list(`Sl NO`="int", Name="varchar(55)", Marks="int"),
row.names=FALSE)
如果您省略 field.types
,则程序包将尝试推断类型。我不是这个包的专家,所以我不知道这个推论有多稳健,但很可能你想为复杂的更新查询指定显式类型。
更大的问题实际上可能是没有为 row.names
指定值。它可以默认为 TRUE
,在这种情况下,包实际上会在更新期间发送一个 extra 列。这可能会导致问题,例如,如果您的目标 table 有三列,并且数据框也有三列,那么您正在尝试使用 四 列进行更新。
我有以下 R 数据框
Sl NO Name Marks
1 A 15
2 B 20
3 C 25
我有一个mysqltable如下。 (Score.table)
No CandidateName Score
1 AA 1
2 BB 2
3 CC 3
我已经使用此代码
将我的数据框写入Score.table username='username'
password='userpass'
dbname='cdb'
hostname='***.***.***.***'
cdbconnection = dbConnect(MySQL(), user=username, password=userpass,
dbname=dbname, host=hostname)
接下来我们将dataframe写入table如下
score.table<-'score.table'
dbWriteTable(cdbconn, score.table, dataframe, append =F, overwrite=T).
代码运行,输出为 TRUE。 但是,当我检查 SQL table 时,新值并未覆盖现有值。 我请求有人帮助我。该代码有效。我重新安装了RMySQL包,重新运行,结果还是一样。
没有发生更新表明 RMySQL
包无法成功地将数据框中的任何行映射到 table 中已有的记录。所以这意味着您对 dbWriteTable
的调用有问题。我看到的两个潜在问题是您没有为 field.types
或 row.names
赋值。考虑进行以下调用:
score.table <- 'score.table'
dbWriteTable(cdbconn, score.table, dataframe,
field.types=list(`Sl NO`="int", Name="varchar(55)", Marks="int"),
row.names=FALSE)
如果您省略 field.types
,则程序包将尝试推断类型。我不是这个包的专家,所以我不知道这个推论有多稳健,但很可能你想为复杂的更新查询指定显式类型。
更大的问题实际上可能是没有为 row.names
指定值。它可以默认为 TRUE
,在这种情况下,包实际上会在更新期间发送一个 extra 列。这可能会导致问题,例如,如果您的目标 table 有三列,并且数据框也有三列,那么您正在尝试使用 四 列进行更新。