Size: a a a

R (язык программирования)

2021 June 12

ДВ

Дмитрий Володин... in R (язык программирования)
а, ну и у двух коннекторов к клику здесь принципиальная разница. Падасхауз использует http, RClickhouse использует tcp
источник

R

Rus in R (язык программирования)
да. и порты разные ... А в R можно заливать через http как в Пандахаузе?
источник

ДВ

Дмитрий Володин... in R (язык программирования)
в http порт можно вставить откуда угодно обычным curl'ом
источник

IS

Ilya Shutov in R (язык программирования)
Htpp убог по определению. Там вся информация превращается в строки. Все потеряно, возможны ошибки точности, с датами проблемы. С нативным интерфейсом нет проблем, надо КХ курить просто
источник

ГД

Григорий Демин... in R (язык программирования)
Попробуйте другой драйвер - https://github.com/hannesmuehleisen/clickhouse-r, он только на Github есть. Использует http интерфейс, а не бинарный.
источник

R

Rus in R (язык программирования)
не тут даже одна таблица не загружается
источник
2021 June 13

ГД

Григорий Демин... in R (язык программирования)
А попробуйте совсем тупо:
chunksize = 20000
chunk_ind = seq_len(nrow(GAaud_h)) %/% chunksize
for(each_chunk in unique(chunk_ind)){
   chunk = GAaud_h[chunk_ind == each_chunk, ]
   dbWriteTable(con, "GAaud_hist", chunk, append=TRUE , row.names = TRUE)
}

Еще хотелось бы поглядеть на питоновский код, который успешно работает.
источник

R

Rus in R (язык программирования)
спасибо попробую сейчас
код питоновский рабочий тут https://pastebin.com/ZFEKzKYE
там чанки по 100 000 в последней строчке указан
источник

ГД

Григорий Демин... in R (язык программирования)
А у вас какие данные - строковых переменных много?
источник

R

Rus in R (язык программирования)
источник

R

Rus in R (язык программирования)
тоже самое :(
источник

ГД

Григорий Демин... in R (язык программирования)
Перевел с питона на R, но проверить возможности нет:
chunksize = 20000
chunk_ind = seq_len(nrow(GAaud_h)) %/% chunksize
for(each_chunk in unique(chunk_ind)){
   chunk = GAaud_h[chunk_ind == each_chunk, ]
   curr = tempfile()
   fwrite(chunk, file = curr, quote = TRUE, eol = "\n", qmethod = "escape", col.names = FALSE)
   chunk = readLines(curr, encoding = "UTF-8")
   chunk = paste(chunk, collapse = "\n")
   dbSendQuery(con, paste0("INSERT INTO GAaud_hist (", chunk, ") FORMAT CSV"))
}
источник

R

Rus in R (язык программирования)
источник

ДВ

Дмитрий Володин... in R (язык программирования)
А row.names точно TRUE должно быть? Вроде в питоне как раз наоборот
источник

ГД

Григорий Демин... in R (язык программирования)
Загадочная ошибка... А если так? Двойные кавычки меняем на одинарные:
chunksize = 20000
chunk_ind = seq_len(nrow(GAaud_h)) %/% chunksize
for(each_chunk in unique(chunk_ind)){
   chunk = GAaud_h[chunk_ind == each_chunk, ]
   curr = tempfile()
   fwrite(chunk, file = curr, quote = TRUE, eol = "\n", qmethod = "escape", col.names = FALSE)
   chunk = readLines(curr, encoding = "UTF-8")
   chunk = gsub('"', "'", chunk, fixed = TRUE)
   chunk = paste(chunk, collapse = "\n")
   dbSendQuery(con, paste0("INSERT INTO GAaud_hist (", chunk, ") FORMAT CSV"))
}
источник

R

Rus in R (язык программирования)
в питоне я добавил специально столбец с уникальным индексом ( просто номер строки) в датафрейм GAaud_hist , чтобы Кликхауз использовал этот столбец как Индексный...

А в R датафрейм GAaud_hist не содержит такого столбца с уникальным индексом ( то есть я его не добавил) , поэтому в R нужен row.names = TRUE
источник

ГД

Григорий Демин... in R (язык программирования)
в моем коде rownames не пишутся, так что тоже надо добавить столбец
источник

R

Rus in R (язык программирования)
это как-то можно сделать в data.table ?
источник

ГД

Григорий Демин... in R (язык программирования)
Если у вас GAaud_hist изначально не data.table, а обычный data.frame, то:
GAaud_hist = data.table(GAaud_hist, keep.rownames = "index")
источник

R

Rus in R (язык программирования)
а можно в личку написать?
источник