gpt4 book ai didi

mysql - RMySQL - dbWriteTable() - 此 MySQL 版本不允许使用命令

转载 作者:行者123 更新时间:2023-11-29 01:35:24 27 4
gpt4 key购买 nike

我正在尝试将一些 Excel 文件读入数据帧,然后写入 MySQL 数据库。以下程序能够读取文件并创建数据帧,但是当它尝试使用 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='<ip>', user='username', password='password', dbname="db",port=3306)
setwd("<directory path>")

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可能是引起关注的原因,但由于它已经在函数定义中,我不知道我能做什么。此外,该语句使用“,”作为分隔符。但我的数据的某些值中有“,”,这就是为什么我对使用数据帧感兴趣,希望它能够保留源结构。但现在我不太确定了。有没有其他方法/函数将数据帧写入 MySQL 表?

最佳答案

我在我的系统上通过将以下行添加到服务器上的 my.cnf 文件中解决了这个问题(您可能需要使用 root 和 vi 进行编辑!)。在我的例子中,它位于“[mysqld]”行下方

local-infile=1

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

关于mysql - RMySQL - dbWriteTable() - 此 MySQL 版本不允许使用命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50080799/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com