使用R中的dbWriteTable从默认值更改表空间

时间:2019-05-24 19:31:44

标签: r db2 r-dbi

我正在尝试使用R中DBI包中的overwrite = TRUEdbWriteTable()append = TRUE写入DB2中的表。我想指定要写入的表空间,而不是写入默认空间(USERSPACE1)。我也不想事先创建表并使用################################### ### Method One - Takes Too Long ### ################################### # `variable_definitions` defines my variable types query <- paste( ' CREATE TABLE MYSCHEMA.TABLE_NAME (',variable_definitions,') IN "DESIRED_SPACE" DISTRIBUTE BY HASH ("FIELD_ONE") COMPRESS YES; ' , sep = '' ) # This works to create the table in the desired table space dbExecute(edw_advanl, query) ## 0 # This takes FOREVER dbWriteTable(conn = myConn, name = "TABLE_NAME", value = myData, append = TRUE) ########################################################## ### Method Two - Changes the Table Space to USERSPACE1 ### ########################################################## # `variable_definitions` defines my variable types query <- paste( ' CREATE TABLE MYSCHEMA.TABLE_NAME (',variable_definitions,') IN "DESIRED_SPACE" DISTRIBUTE BY HASH ("FIELD_ONE") COMPRESS YES; ' , sep = '' ) # Again, this works to create the table in the desired table space dbExecute(edw_advanl, query) ## 0 # This now puts the table in the default table space dbWriteTable(conn = myConn, name = "TABLE_NAME", value = myData, overwrite = TRUE) ,因为它往往比覆盖花费更多的时间(我每次写表时大约有400万行具有不同的列数;最少100列) )。覆盖会将表空间切换回默认值。

我首先尝试创建表并定义表空间,但这需要附加而不是覆盖。我还尝试过在想要的表空间中创建表,然后进行覆盖,但是该表会切换回默认表空间。 dbWriteTable的参数不支持更改表空间。

myData

我想要的结果是将dbWriteTable(R数据帧)尽快写入DESIRED_SPACE表空间中。我目前正在使用{{1}},但可以使用其他方法。

0 个答案:

没有答案
相关问题