如何在MySQL中从数据向量创建表列



这里是SQL的新手。我有使用R从数据向量创建表/数据帧的经验。下面是一些基本的R代码的例子,它实现了我在MySQL中尝试做的事情。

df = data.frame(var1 = c(1,2,3), var2 = c('a','b','c'))

产生

var1 var2
1    1    a
2    2    b
3    3    c

我想知道如何在MySQL中做到这一点。

例如,我可以写:

create table dummytable select 1 as var1, a as var2;

我会得到一个单行表,第1列有1,第2列有b。但是,我该如何用数据向量替换上面的1和a,从而使我创建的表具有多行?

很明显,这是行不通的,但我想要的是:

create table dummytable select c(1,2,3) as var1, c('a','b','c') as var2;

创建和使用矢量缺少什么基本功能?

我手头没有MySQL,但它在SQL Server、PostgreSQL和SQLite中进行了测试。

conn <- DBI::dbConnect(...)
DBI::dbExecute(conn, "create table dummytable (var1 int, var2 nchar(3))")
# [1] 0
DBI::dbExecute(conn, "insert into dummytable (var1, var2) values (1,'a'), (2,'b'), (3,'c')")
# [1] 3
DBI::dbGetQuery(conn, "select * from dummytable")
#   var1 var2
# 1    1    a
# 2    2    b
# 3    3    c
mydat <- data.frame(var1 = 4:5, var2 = c("d", "e"), stringsAsFactors = FALSE)
DBI::dbWriteTable(conn, "dummytable", mydat, append = TRUE)
DBI::dbGetQuery(conn, "select * from dummytable")
#   var1 var2
# 1    1    a
# 2    2    b
# 3    3    c
# 4    4    d
# 5    5    e
# equivalent to dbWriteTable:
DBI::dbAppendTable(conn, "dummytable", mydat)

最新更新