Я пытаюсь записать в таблицу в DB2, используя overwrite = TRUE
с dbWriteTable()
из пакета DBI в R. Я хотел бы указать табличное пространство, в которое я пишу, а не в пространство по умолчанию (USERSPACE1 ). Я также предпочел бы не создавать таблицу заранее и использовать append = TRUE
, потому что она, как правило, занимает НАМНОГО дольше, чем перезапись (у меня примерно 4 миллиона строк с разным количеством столбцов каждый раз, когда я пишу ее; минимум 100 столбцов). Перезапись переключает табличное пространство обратно на значение по умолчанию.
Сначала я попытался создать таблицу и определить табличное пространство, но это требует добавления, а не перезаписи. Я также попытался создать таблицу в табличном пространстве, в котором я ее хочу, и затем перезаписать, но таблица возвращается к табличному пространству по умолчанию. Аргументы для dbWriteTable не поддерживают изменение табличного пространства.
###################################
### 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)
Мой желаемый результат состоит в том, чтобы myData
(R dataframe) записывался в табличное пространство DESIRED_SPACE как можно быстрее. В настоящее время я использую dbWriteTable
, но я открыт для других методов.