OpalR: Debugging Table Import Fails

We are having some trouble with opal.table_import from opalr.

> opal.table_import(o,
                   paste0("/projects/Test_Project/",fileSavePath),
                   project='Test_Project',
                   table="tab"
                   )

Error: Import of “/projects/Test_Project/'temp-data-csv.rds” ended with status: FAILED.

> opal.tasks(o)
id type user project startDate endDate status
1 1 import administrator Test_Project 2023-03-08T14:55:27.242Z 2023-03-08T14:55:28.409Z FAILED

You may assume that:

  • The file passed for import is a Tibble stored as an RDS.
  • The tibble in question is a table with N rows and 4 columns, with sparse NA values.
  • The project Test_Project already exists.
  • The table tab does not already exist.

Any idea what may have gone wrong, or how to fix it?

Reprex:

#Load Packages:
library(DSI)
library(DSOpal)
library(dsBaseClient)
library(readr)
library(opalr)

library(sys)     #Env Vars
library(dotenv)  #Env Vars

DEFAULT_CONNECTION_SERVER <- Sys.getenv('DEFAULT_CONNECTION_SERVER')
DEFAULT_CONNECTION_URL <- Sys.getenv('DEFAULT_CONNECTION_URL')
DEFAULT_CONNECTION_USER <- Sys.getenv('DEFAULT_CONNECTION_USER')
DEFAULT_CONNECTION_PASSWORD <- Sys.getenv('DEFAULT_CONNECTION_PASSWORD')

# Read .csv
data <- read_delim(paste0('../../studyfolder/study0/registry','.csv'), delim=';')
# Convert .csv to .Rds
fileSavePath <- paste0('temp-data-csv','.rds')
saveRDS(data, file = fileSavePath)

# Login to opal
o <- opal.login(DEFAULT_CONNECTION_USER, DEFAULT_CONNECTION_PASSWORD, url = DEFAULT_CONNECTION_URL)

# Create project
if (!opal.project_exists(o, "Test_Project"))
  opal.project_create(o, "Test_Project", database = "mysqldb")

#Get Project Info
opal.project(o, "Test_Project")

#Upload new csv
opal.file_upload(o, fileSavePath, '/projects/Test_Project', all.files = TRUE)

#Table Update
opal.table_import(o, paste0("/projects/Test_Project/",fileSavePath), project='Test_Project',
                   table="tab"
                   )

Hi,

Use opal.table_save() instead, it does all the dirty work for you.

Yannick

1 Like

Thanks, it worked like a charm!

Can I ask if opal.table_import has been deprecated or something? I just want to know if I did anything wrong. :slight_smile:

The opal.table_import function is not deprecated as it is used by opal.table_save :slight_smile:

You can check the source code if you wish.

Regards
Yannick

1 Like