Как создать столбец таблицы из вектора данных в MySQL? - PullRequest
0 голосов
/ 03 апреля 2020

Новый для SQL здесь. У меня есть опыт использования R для создания таблиц / фреймов данных из векторов данных. Вот пример некоторого базового c 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 и b в столбце 2 Но как бы я заменил 1 и выше на векторы данных, чтобы создаваемая таблица имела несколько строк?

Ясно, что это не сработает, но то, что я ищу, это что-то вроде :

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

Какая базовая c функция мне не хватает для создания и использования векторов?

1 Ответ

0 голосов
/ 03 апреля 2020

У меня нет 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...