我试图创建一个clickhouse数据库,并将许多文件中的值复制到一个表中(所有文件的列顺序相同)。
但我不知道该怎么处理。
我用的是rclickhouse,我不知道它和clickhouse-r有什么区别。
library(RClickhouse)
library(DBI)
library(tidyverse)
eggnog_dir <- "/home/acpguedes/projects/sig_trans/data/eggnog/table/"
setwd(eggnog_dir)
myconn <- DBI::dbConnect(drv = RClickhouse::clickhouse())
mytables <- list.files(".") # all tables are in the same folder
mysqltb <- db_create_table(con = myconn, table = 'eggnog')
lapply(mytables, function(x) {
read_tsv(file = x,
col_names = c( #in my case the tables has no header
'sequence',
'model',
'start',
'end',
'evalue',
'cov',
'qstart',
'qend',
'iteration',
'score',
'talilen',
'qlen',
'estart',
'eend',
'program'
)
) %>% dbWriteTable(conn=myconn, value = ., name = "domains", append=TRUE)
}
) -> dt
不管列本身,我只想举一个例子,说明如何创建一个表,并将许多文件的内容加载到表中(如tsv ou csv或任何delim表)。
我还试着 dbpĺyr
使用 copy_to()
相反 dbWriteTable
.
另外,在加载完所有表之后,我是否应该执行“commit”语句将数据库永久保存到r或其他平台的后期访问?
提前谢谢。
1条答案
按热度按时间iezvtpos1#
如果不能在r外部或在重新启动后读取表,那么问题似乎是提交到数据库。
在考试结束后尝试以下方法
lapply
:为您的应用程序使用适当的commit语句。
另一种可能性(不太可能)是表的创建或写入是临时的。两者
dbCreateTable
以及dbWriteTable
在dbi包中有一个参数temporary
使用默认值FALSE
所以这不应该是原因。但把这个论点说清楚也无妨temporary = TRUE
会让你的table不留着。同样值得检查的是db_create_table
你正在使用的dbCreateTable
从dbi包。