是否可以将值dbGetQuery从RMySQL包传递到查询中。
例如,如果我在字符向量中有一组值:
df <- c('a','b','c')
Run Code Online (Sandbox Code Playgroud)
我想遍历这些值以从数据库中为每个值提取特定值。
library(RMySQL)
res <- dbGetQuery(con, "SELECT max(ID) FROM table WHERE columna='df[2]'")
Run Code Online (Sandbox Code Playgroud)
当我尝试将引用添加到值时,出现错误。想知道是否可以从查询中的R对象添加值。
我正在尝试运行一个适用于MySQL或其他MySQL连接器API的简单查询,
SELECT * FROM `table` WHERE type = 'farmer'
Run Code Online (Sandbox Code Playgroud)
我已尝试使用RMySQL包的各种方法,他们都得到相同的错误
RS-DBI driver warning: (unrecognized MySQL field type 7 in column 1 imported as character)
Type = 'farmer'
(Query<-paste0("SELECT * FROM `table` WHERE type = '%",Type,"%'"))
res<-dbGetQuery(con, Query)
Query<-paste("SELECT * FROM `table` WHERE type = \'farmer\'")
Query<-paste("SELECT * FROM `table` WHERE type = 'farmer'")
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
在处理MySQL服务器中的大量行的脚本中,我使用dbSendQuery并fetch限制取得和处理结果.
当我的fetch命令确切地检索结果集中可用(或左)的行数时,保留0行以获取,dbHasCompleted返回FALSE而我希望它返回TRUE.
query <- "select record_id, name
from big_table left join another_table using (record_id)
limit 500"
resultset <- dbSendQuery(con, query) # con: DB connection
while(!dbHasCompleted(resultset)) {
input <- fetch(resultset, n = 500)
print(paste("Rows fetched:", nrow(input)))
# process input ...
}
Run Code Online (Sandbox Code Playgroud)
我希望这个循环运行一次,但是在处理之后有一个额外的运行,print再次调用:
Rows fetched: 500
...
Rows fetched: 0
Run Code Online (Sandbox Code Playgroud)
显然,dbHasCompleted(resultset)在获取可用行的确切数量时为false(对于n = 1000,2000,3000,观察到相同的行为).在此脚本中n = 501时,没有第二个循环.
这是预期的吗?难道我做错了什么?
有包:RMySQL
如何从R批量上传大量数据到mysql?我有一个大约100万行和80列的csv.
会这样的吗?
dbWriteTable(con, "test2", "~/data/test2.csv") ## table from a file
Run Code Online (Sandbox Code Playgroud)
我担心这会逐行插入......
(对不起,如果这是非常基本的,我只是无法弄清楚)
我有一个表 t 坐在一个 mysql 数据库中,它看起来像这样:(名称是主键)
数据库中的当前表
Name Balance
Bob 100
Ted 150
Carl 130
Run Code Online (Sandbox Code Playgroud)
我在 R 中也有一个 data.frame 反映了余额的变化
R中的数据框
Name Balance
Bob 90
Ted 170
Bill 50
Run Code Online (Sandbox Code Playgroud)
我想执行相当于 mysql替换的操作,以便更新我的表以反映新的余额
数据库中的所需表
Name Balance
Bob 90
Ted 170
Carl 130
Bill 50
Run Code Online (Sandbox Code Playgroud)
我目前正在使用 RMySQL 包 - 我尝试使用 dbWriteTable 执行此操作,但无法使其正常工作。
Eg1(“插入”)
dbWriteTable(dbConnection, 'tableName', df, row.names=F, append=T)
Run Code Online (Sandbox Code Playgroud)
生产
Name Balance
Bob 100
Ted 150
Carl 130
Bill 50
Run Code Online (Sandbox Code Playgroud)
Eg2(“覆盖”)
dbWriteTable(dbConnection, 'tableName', df, row.names=F, append=F, overwrite=T)
Run Code Online (Sandbox Code Playgroud)
生产
Name Balance …Run Code Online (Sandbox Code Playgroud) 我是R的新手。我正在尝试通过RMyQL包连接到R中的mySQL。我正在使用以下命令连接到SQL Server
ucscdb<-dbConnect(MySQL(),user="xxxx",password="xxxx",dbname="More",host="http://54.89.81.190/phpmyadmin/").
Run Code Online (Sandbox Code Playgroud)
我收到以下错误
**Error in .local(drv, ...) :
Failed to connect to database: Error: Unknown MySQL Server Host 'http://54.89.81.190/phpmyadmin/' (11001)**
Run Code Online (Sandbox Code Playgroud)
可能是什么原因。同一台SQl服务器很容易在linux /中连接
在MySQL数据库中,表以utf8编码,但由于某种原因,连接在latin1中.
res <- RMySQL::dbSendQuery(con,"show variables like 'character_set_%'")
dbFetch(res)
Variable_name Value
1 character_set_client latin1
2 character_set_connection latin1
3 character_set_database utf8mb4
4 character_set_filesystem binary
5 character_set_results latin1
6 character_set_server latin1
7 character_set_system utf8
8 character_sets_dir /usr/share/mysql/charsets/
Run Code Online (Sandbox Code Playgroud)
RMySQL::dbGetQuery(con,"show variables like 'character_set_%'")
RMySQL::dbGetQuery(con,"set names utf8")
Run Code Online (Sandbox Code Playgroud)
但我实际上更喜欢使用dplyr::tbl查询数据库.由于dplyr::src_mysql只创建连接,因此可以发送创建表的sql语句.将连接设置设置为使用utf8编码的dplyr方法是什么?
在R中,我有一个字符串的矢量"myVector",我希望将其插入到mysql表"myTable"的列"myColumn"中.我知道我可以编写sql查询并使用dbSendQuery在R中运行它.所以让我们先找出sql查询.这是一个例子:
myVector = c("hi","I", "am")
Run Code Online (Sandbox Code Playgroud)
让我们在myTable的myColumn列中插入myVector,行号为3到5,这里是sql查询,除了最后一行我不知道:
UPDATE myTable t JOIN
(SELECT id
FROM myTable tt
LIMIT 3, 3
) tt
ON tt.id = t.id
SET myColumn = myVector;
Run Code Online (Sandbox Code Playgroud)
谢谢
我使用编写了一个 data.frame
dbWriteTable(con, name='db_all', df, overwrite=T, row.names=F)
Run Code Online (Sandbox Code Playgroud)
使用 RMySQL 成功连接到 MySQL。现在我有第二个数据框,它具有类似的结构并尝试使用
dbWriteTable(con,name='db_all',df1,append=T,row.names=F,overwrite=F)
Run Code Online (Sandbox Code Playgroud)
这给了我
.local(conn, statements, ...) 中的错误:无法运行语句:“字段列表”中的未知列“zzz”>
在我的 SQL 表中,我还没有该列名称,并且希望我的 append=T 会在我的 SQL 表中添加此列,但显然它没有。
我最近在计算机上安装了MySQL,并尝试将RStudio连接到MySQL。我按照书中的说明以及此处的说明进行操作。但是,无论何时使用dbConnect()或src_mysql在中RStudio,我都会收到以下错误消息:
Error in .local(drv, ...) :
Failed to connect to database: Error: Plugin caching_sha2_password could not be loaded: The specified module could not be found
Run Code Online (Sandbox Code Playgroud)
例如,我可能会在Windows中使用命令提示符登录到MySQL
mysql -u username -p
并如下创建数据库
CREATE DATABASE myDatabase;
然后在RStudio中:
library(RMySQL)
db <- dbConnect(MySQL(), dbname = "myDatabase", user = "username",
password = "password", host = "localhost")
Run Code Online (Sandbox Code Playgroud)
而我的回应始终是上面列出的错误消息。
如果需要的话:
sessionInfo()
R version 3.5.2 (2018-12-20)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Run Code Online (Sandbox Code Playgroud)