gpt4 book ai didi

r - 使用 ROracle dbWriteTable 将 POSIXct 写回 Oracle DB

转载 作者:行者123 更新时间:2023-12-02 01:31:53 29 4
gpt4 key购买 nike

在 Oracle 数据库中:

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

从错误消息中可以看到,我已经在 R = "Europe/London"中设置了环境变量 TZ。另外,从上面的查询中,您可以看到 Oracle 中的 session 时区也是“欧洲/伦敦”。

为什么错误消息提示 Oracle 和 R 之间的时区不同?

如何将 R 中的 POSIXct 写入 Oracle DB 中的 DATE 列?

最佳答案

以下作品:

> Sys.setenv(TZ = "GMT")
> Sys.setenv(ORA_SDTZ = "GMT")
> dbWriteTable(conn, "ORACLE_DB_TABLE", r_data_table, overwrite = F, append = T, row.names = F)

关于r - 使用 ROracle dbWriteTable 将 POSIXct 写回 Oracle DB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29917011/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com