使用ROracle dbWriteTable将POSIXct写回Oracle DB
发布时间:2020-12-12 13:15:32 所属栏目:百科 来源:网络整理
导读:在Oracle DB中: DESCRIBE ORACLE_DB_TABLE;|---------------------------------------|| Column Name | Data Type ||---------------------------------------|| TRANSACTION_TIME | DATE || TRANSACTION_ID | VARCHAR2 (20 Byte) || TRANSACTION_AMT | NUM
在Oracle DB中:
DESCRIBE ORACLE_DB_TABLE; |---------------------------------------| | Column Name | Data Type | |---------------------------------------| | TRANSACTION_TIME | DATE | | TRANSACTION_ID | VARCHAR2 (20 Byte) | | TRANSACTION_AMT | NUMBER (38,10)] | |---------------------------------------| 在R: > r_data_table TRANSACTION_TIME TRANSACTION_ID TRANSACTION_AMT 1: 2015-04-28 11:12:24 ABC 123 > dbWriteTable(conn,"ORACLE_DB_TABLE",r_data_table,overwrite = F,append = T,row.names = F) > Error in .oci.WriteTable(conn,name,value,row.names = row.names,overwrite = overwrite,: Error in .oci.ValidateZoneInEnv(FALSE) : environment variable 'ORA_SDTZ()' must be set to the same time zone region as the the environment variable 'TZ(Europe/London)' > dbGetQuery(conn,"SELECT SESSIONTIMEZONE FROM DUAL") SESSIONTIMEZONE 1 Europe/London 从错误消息中可以看出,我已将环境变量TZ设置为R =“Europe / London”.此外,从上面的查询中,您可以看到Oracle中的会话时区也是“欧洲/伦敦”. 为什么错误消息抱怨Oracle和R之间的时区不同? 如何将R中的POSIXct写入Oracle DB中的DATE列? 解决方法以下作品:> Sys.setenv(TZ = "GMT") > Sys.setenv(ORA_SDTZ = "GMT") > dbWriteTable(conn,row.names = F) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |