rmysql-dbwritetable()-此mysql版本不允许使用该命令

brccelvz  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(498)

我正在尝试将一些excel文件读入数据框,然后写入mysql数据库。下面的程序能够读取文件并创建Dataframe,但是当它尝试使用 dbWriteTable 命令,我收到一条错误信息- Error in .local(conn, statement, ...) : could not run statement: The used command is not allowed with this MySQL version ```
library(readxl)
library(RMySQL)
library(DBI)
mydb = dbConnect(RMySQL::MySQL(), host='', user='username', password='password', dbname="db",port=3306)
setwd("")

file.list <- list.files(pattern='*.xlsx')
print(file.list)

dat = lapply(file.list, function(i){
print(i);
x = read_xlsx(i,sheet=NULL, range=cell_cols("A:D"), col_names=TRUE, skip=1, trim_ws=TRUE, guess_max=1000)
x$file=i
x
})

df = do.call("rbind.data.frame", dat)

dbWriteTable(mydb, name="table_name", value=df, append=TRUE )

dbDisconnect(mydb)

我查过了 `dbWriteTable` 函数,看起来它正在使用 `load data local inpath` 将数据存储在数据库中。根据其他关于stackoverflow的问题,我理解 `local` 可能会引起关注,但由于它已经在函数定义中,我不知道我能做什么。此外,此语句使用“,”作为分隔符。但是我的数据在某些值中有“,”,这就是为什么我对使用dataframes感兴趣,希望它能保留源结构。但现在我不太确定。有没有其他方法/函数将dataframe写入mysql表?
6qqygrtg

6qqygrtg1#

你可能需要换衣服 dbWriteTable(mydb, name="table_name", value=df, append=TRUE )dbWriteTable(mydb, name="table_name", value=df,field.types = c(artist="varchar(50)", song.title="varchar(50)"), row.names=FALSE, append=TRUE) 这样,就可以在r中指定字段类型,并将数据附加到mysql表中。
source:unknown column 字段列表错误rmysql

w8f9ii69

w8f9ii692#

我在我的系统上解决了这个问题,在服务器上的my.cnf文件中添加了以下行(您可能需要使用root和vi来编辑!)。在我看来,这就在“[mysqld]”的下面

local-infile=1

然后重新启动服务器。祝你好运!

相关问题