我正在尝试使用R中DBI包中的overwrite = TRUE
和dbWriteTable()
将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}},但可以使用其他方法。