我正在使用 GridDB 并尝试对时间序列数据执行聚合操作。我有一个时间序列容器,用于保存温度读数和时间戳。我想计算不同时间窗口的平均温度,但我不确定如何正确设置时间范围并使用oracle执行聚合。
import cx_Oracle
import griddb_python as griddb
# Connect to Oracle Database
oracle_conn = cx_Oracle.connect("admin/ali_786@localhost:1521/ORCL")
oracle_cursor = oracle_conn.cursor()
oracle_cursor.execute("SELECT * FROM Customers")
# Connect to GridDB
factory = griddb.StoreFactory.get_instance()
griddb_store = factory.get_store(host="192.168.0.13", port=10001, cluster_name="zaigham", username="admin", password="ali_786")
container = griddb_store.get_container("conn")
# Insert data into GridDB
for row in oracle_cursor:
# Mapping Oracle row to GridDB types here
container.put(row)
# Commit the transaction
container.commit()
从Oracle顺利迁移到GridDB的关键是准确的数据类型映射。以下是一些对我来说效果很好的映射:
Oracle NUMBER ➡️ GridDB DOUBLE 或 INTEGER:根据您处理的是整数还是小数,将字段映射到 或 可以保持数据完整性。 数字双整数
Oracle VARCHAR2 ➡️ GridDB STRING:两种类型都处理文本,但请注意 Oracle 模式和 GridDB 之间的最大长度差异,以避免截断问题。
Oracle DATE 或 TIMESTAMP ➡️ GridDB TIMESTAMP:Oracle 和 字段应映射到 GridDB 中,这适用于日期时间值。DATE TIMESTAMP TIMESTAMP
在迁移过程中,确保正确记录错误和失败的插入:
Oracle:使用 PL/SQL 中的处理来记录数据提取期间的任何错误。EXCEPTION
GridDB:使用 GridDB 的错误处理机制对失败的插入实现错误处理:
try {
container.multiPut(rows);
} catch (GSException e) {
// Log or handle failed inserts
}