Ho un set di dati, come di seguitosqlSave Aggiornamento DB Oracle Tabella -Non lavorare per campo Data
> head(resultsclassifiedfinal_MC_TC_P1)
FEEDBACK_NUMBER Biz_Div_Num ACCURACY Category_Num CLASSIFIED_BY ACTIVE_IND CRT_BY_USR_NUM
1 20140211-1173 556 99.48% 2303 CMC 1 SYSTEM
2 20140211-1886 556 99.6% 2232 CMC 1 SYSTEM
3 20140209-0115 556 66.09% 2232 CMC 1 SYSTEM
4 20140202-0337 556 93.7% 2232 CMC 1 SYSTEM
5 20140203-0418 552 50% 2232 CMC 1 SYSTEM
6 20140303-1339 552 54.45% 2232 CMC 1 SYSTEM
e sono in grado di inserire questi record in una tabella già esistente in Oracle DB
> library(RODBC)
> channel <- odbcConnect("R", uid="xxx", pwd="[email protected]")
> sqlSave(channel,resultsclassifiedfinal_MC_TC_P1, tablename="table1", rownames=FALSE, append=TRUE,fast = FALSE,nastring = NULL)
> odbcClose(channel)
A table1
in Oracle Db - aggiungo un'altra colonna CRT_DTTM
. La mia struttura della tabella è al di sotto
tmp <- sqlColumns(channel, "table1")
> varspec <- tmp$TYPE_NAME
> varspec
[1] "VARCHAR2" "VARCHAR2" "VARCHAR2" "VARCHAR2" "VARCHAR2" "DECIMAL" "VARCHAR2" "DATE"
E in R dataframe - aggiungo una colonna (coreesponding ad una nuova colonna in Oracle)
resultsclassifiedfinal_MC_TC_P1$CRT_DTTM <- Sys.Date()
FEEDBACK_NUMBER Biz_Div_Num ACCURACY Category_Num CLASSIFIED_BY ACTIVE_IND CRT_BY_USR_NUM CRT_DTTM
1 20140211-1173 556 99.48% 2303 CMC 1 SYSTEM 2014-07-25
2 20140211-1886 556 99.6% 2232 CMC 1 SYSTEM 2014-07-25
3 20140209-0115 556 66.09% 2232 CMC 1 SYSTEM 2014-07-25
4 20140202-0337 556 93.7% 2232 CMC 1 SYSTEM 2014-07-25
5 20140203-0418 552 50% 2232 CMC 1 SYSTEM 2014-07-25
6 20140303-1339 552 54.45% 2232 CMC 1 SYSTEM 2014-07-25
Quando provo a inserire nella tabella 1, ottengo qui di seguito errore di
> library(RODBC)
> channel <- odbcConnect("R", uid="wl_XXX", pwd="[email protected]")
> sqlSave(channel,resultsclassifiedfinal_MC_TC_P1, tablename="table1", rownames=FALSE, append=TRUE,fast = FALSE,nastring = NULL)
Error in sqlSave(channel, resultsclassifiedfinal_MC_TC_P1, tablename = "table1", :
unable to append to table ‘table1’
> odbcClose(channel)
il problema è con l'appena aggiunto CRT_DTTM
> sapply(resultsclassifiedfinal_MC_TC_P1,class)
FEEDBACK_NUMBER CLASS_DIV_CD ACCURACY CLASS_CATG_CD CLASSIFIED_BY ACTIVE_IND
"factor" "matrix" "factor" "matrix" "factor" "numeric"
CRT_BY_USR_NUM CRT_DTTM
"character" "Date"
> sapply(resultsclassifiedfinal_MC_TC_P1,mode)
FEEDBACK_NUMBER CLASS_DIV_CD ACCURACY CLASS_CATG_CD CLASSIFIED_BY ACTIVE_IND
"numeric" "numeric" "numeric" "numeric" "numeric" "numeric"
CRT_BY_USR_NUM CRT_DTTM
"character" "numeric"
Il tipo di dati in R e Oracle per quella colonna è Date
- ma non funziona. Ottengo errore. Qualcuno può aiutare, su questo.
Aggiornamento:
per rendere la domanda più semplice, Pls. A seguire 'tabla1' in R
FN CRT_DTTM
1 20140526-0006 2014-07-30
2 20140528-0005 2014-07-30
3 20140613-0065 2014-07-30
4 20140528-0002 2014-07-30
5 20140522-0004 2014-07-30
str(table1)
'data.frame': 5 obs. of 2 variables:
$ FN : Factor w/ 5 levels
$ CRT_DTTM: Date, format: "2014-07-30" "2014-07-30" "2014-07-30" ...
non riesco a inserire questa colonna in Oracle DB. (Ho tabella in Oracle con solo 2 campi con varchar2 e data come tipo). Se converto la mia colonna CRT_DTTM
in carattere in R e poi cambio il tipo Data in varchar2 in Oracle (sviluppo) - si sta inserendo. Tuttavia, non posso modificare il mio tipo di dati in Oracle (in produzione)
hai potuto importare come una stringa e quindi utilizzare la funzione TO_DATE di Oracle DB dopo? –
Aggiornare direttamente da R a Orcale DB, non posso modificare il mio tipo di dati. Quindi non posso fare to_date – RUser
Qualcuno può aiutarci, perdere qualcosa di base, non è sicuro di come farlo, qualsiasi soluzione alternativa in R – RUser