2015-05-04 2 views
1

В моей базе SQl тип item_id - bigint (20) Мне нужно извлечь список item_id, а затем вставить его в другую таблицу, чтобы сделать соединение.bigint (20) in sql query в R

Но R преобразует item_id в «double» в результате запроса.

{query.1<-c("Select ITEM_ID FROM DISPLAY WHERE client_key=121") 
query.1 <- paste (query.1, collapse = " ") 
items<- dbGetQuery(connect.base, query.1) 

typeof(items$ITEM_ID) 
[1] "double"} 

Так что я не могу ввода этого значения в новую таблицу, как присоединиться не будет работать нет BIGINT (20) в R, так что, вероятно, мне нужно, чтобы преобразовать в carácter, но как я могу сделать это в запросе RMySQL?

Любая помощь будет намного appriciate

+0

Насколько я знаю, при вставке данных из R в DB-таблицы преобразования данных типы - это вопрос СУБД. Если тип столбца в вашем 'data.frame' является' CAST' -способен на необходимый, определенный в свойствах DB-таблицы, то вставка будет в порядке. Хотя преобразование в 'character' или' integer' довольно просто: 'items $ ITEM_ID <- as.character (items $ ITEM_ID)' или то же самое с 'as.integer', но, как я думаю,' as.integer' может вызвать ошибку из-за больших значений в столбце 'ITEM_ID'. – inscaven

+0

«as.character» Это то, что я делал, но преобразовал двойные числа в charecters, поэтому конечный результат был неправильным, чтобы сделать дальнейшее соединение. Единственное решение, которое я нашел, - это напрямую (item_id as char) в sql-запрос. и определить тип столбца как bigint (20) в dbWriteTable. – user3825422

ответ

1

Вы должны создать таблицу в MySQL с заданными полями. Как

dbSendQuery(connect.base, "create table new_table(
ITEM_ID bigint not null, 
key(ITEM_ID))ENGINE=InnoDB DEFAULT CHARSET=utf8;") 

Затем, если вы пишете таблицу БД с R, используя append=TRUE значение будет в правильном формате:

dbWriteTable(connect.base, "new_table",items, append=TRUE,row.names=F)