标签: rmysql

向RMySQL getQuery添加动态值

是否可以将值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对象添加值。

r rmysql

5
推荐指数
1
解决办法
7111
查看次数

RS-DBI驱动程序警告:(作为字符导入的第1列中无法识别的MySQL字段类型7)

我正在尝试运行一个适用于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)

我究竟做错了什么?

r rmysql

5
推荐指数
2
解决办法
3656
查看次数

获取所有结果后,RMySQL结果集不"完整"

在处理MySQL服务器中的大量行的脚本中,我使用dbSendQueryfetch限制取得和处理结果.

当我的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时,没有第二个循环.

这是预期的吗?难道我做错了什么?

r rmysql

5
推荐指数
0
解决办法
565
查看次数

R批量上传数据到MYSQL数据库

有包:RMySQL

如何从R批量上传大量数据到mysql?我有一个大约100万行和80列的csv.

会这样的吗?

dbWriteTable(con, "test2", "~/data/test2.csv") ## table from a file
Run Code Online (Sandbox Code Playgroud)

我担心这会逐行插入......

mysql bulkinsert r bulk-load rmysql

5
推荐指数
2
解决办法
7261
查看次数

以 mysql REPLACE 方式将 R data.frame 插入到 mysql 表中

(对不起,如果这是非常基本的,我只是无法弄清楚)

我有一个表 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)

mysql r rmysql

5
推荐指数
1
解决办法
2659
查看次数

MySQl和R:连接数据库时出错

我是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 r rmysql

5
推荐指数
1
解决办法
3993
查看次数

如何将dplyr :: tbl连接编码更改为utf8?

在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将连接的字符集设置为utf8.

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 rmysql dplyr

5
推荐指数
1
解决办法
1752
查看次数

如何在mysql中将向量插入表的列?

在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)

谢谢

mysql sql vector rmysql

5
推荐指数
1
解决办法
1466
查看次数

字段列表中的未知列错误 Rmysql

我使用编写了一个 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 r rmysql

4
推荐指数
1
解决办法
6057
查看次数

如何将R连接到MySQL?无法连接到数据库:错误:无法加载插件caching_sha2_password

我最近在计算机上安装了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)

mysql r rmysql r-dbi

4
推荐指数
1
解决办法
2112
查看次数

标签 统计

rmysql ×10

r ×9

mysql ×6

bulk-load ×1

bulkinsert ×1

dplyr ×1

r-dbi ×1

sql ×1

vector ×1