使用ConnectorX从Oracle数据库获取完整DateTime类型数据的方法咨询
如何通过ConnectorX从Oracle获取完整的Datetime数据
你遇到的问题是ConnectorX默认对Oracle的DATE类型解析时只保留日期部分,而Oracle的DATE类型本身包含完整的日期和时间信息。可以通过以下两种方法解决:
方法1:指定类型映射参数(推荐)
在调用cx.read_sql时,通过type_map参数强制将Oracle的DATE类型映射到包含时间的datetime类型,完整保留时间部分:
import connectorx as cx # 构建Oracle连接URL conn_str = "oracle://<用户名>:<密码>@<主机>:<端口>/<服务名>" # 你的查询语句 sql_query = "SELECT * FROM your_target_table" # 定义类型映射:将Oracle的DATE类型映射为pandas的datetime64[ns] type_mapping = { "DATE": "datetime64[ns]" } # 读取数据并应用类型映射 df = cx.read_sql(conn_str, sql_query, type_map=type_mapping) # 验证后保存为Parquet df.to_parquet("output_with_full_datetime.parquet")
这个方法无需修改SQL语句,直接通过ConnectorX的参数控制类型解析,是最简洁的解决方案。
方法2:在SQL查询中显式转换
如果上述方法不生效,可以在查询时显式将DATE列转换为包含时间的格式,再读取:
SELECT id, name, -- 显式保留时间部分 TO_CHAR(datetime_col, 'YYYY-MM-DD HH24:MI:SS') AS datetime_col, other_col FROM your_target_table
读取后将字符串列转换为datetime类型:
import pandas as pd df["datetime_col"] = pd.to_datetime(df["datetime_col"], format="%Y-%m-%d %H:%M:%S")
这种方法需要修改SQL语句,适合特殊场景下使用。
内容的提问来源于stack exchange,提问作者MPenner
相关产品推荐
相关产品推荐

