2016-03-17 2 views
1

Я получаю эту ошибку ниже, когда я запускаю приведенный ниже код, чтобы прочитать таблицу моего сервера MySQL.Ошибка RMySQL - повторяющиеся имена строк

my_data <- dbReadTable(mydb, "ar_data") 
Warning message: 
row.names not set (duplicate elements in field) 

Есть ли способ, с помощью которого я не прошу R читать имена строк. Моя таблица прекрасна, и я не хочу вносить какие-либо изменения в мою таблицу MySQL.

+0

Это не ошибка, это предупреждение. У вашей таблицы, вероятно, был столбец с именем 'row_names'. И 'dbReadTable' хотел бы взять его, чтобы задать имена строк вашего фрейма данных в R. Но для этого R нуждается в уникальных значениях в этом столбце, что, похоже, не так. В результате, 'my_data' не будет иметь имена строк, а столбец с именем' row_names'. Если вам не нравится предупреждение, оберните 'dbReadTable' в' suppressWarnings() '. – lukeA

ответ

0

Вот несколько вариантов:

library(RMySQL) 
library(DBI) 
drv <- dbDriver("MySQL") 
con <- dbConnect (drv, dbname="mydb", user="username") 

data <- mtcars; rownames(data) <- NULL; data$row_names <- rownames(mtcars)[1] 
dbWriteTable(con, "mtcars", data, overwrite = T, row.names = F) 
head(dbReadTable(con, "mtcars"), 3) 
# mpg cyl disp hp drat wt qsec vs am gear carb row_names 
# 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 
# 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 
# 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Mazda RX4 
# Warning message: 
# row.names not set (duplicate elements in field) 

# suppress warnings 
head(suppressWarnings(dbReadTable(con, "mtcars")), 3) 
# mpg cyl disp hp drat wt qsec vs am gear carb row_names 
# 1 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 Mazda RX4 
# 2 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 Mazda RX4 
# 3 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 Mazda RX4 

# rename column row_names to rn 
dbSendQuery(con, "ALTER TABLE mtcars CHANGE COLUMN row_names rn TEXT") 
head(dbReadTable(con, "mtcars"), 3) 
#   rn mpg cyl disp hp drat wt qsec vs am gear carb 
# 1 Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4 
# 2 Mazda RX4 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4 
# 3 Mazda RX4 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1 

dbSendQuery(con, 'DROP TABLE mtcars') 
dbDisconnect(con) 
Смежные вопросы