【发布时间】:2019-11-21 16:05:11
【问题描述】:
我试图将一堆 ExcelSheets 加载到 Oracle 表中。 excel表格不一致。所以Oracle中的表需要根据Excelsheets中的列动态生成。这是我在互联网上找到的最简单的解决方案,所以我继续采用这种方法。我是 Python 的新手。
以下面的结构为例。
我正在尝试将以下 excel 导入到 MEM_TABLE 表中。 DATE 字段不一致,可以有 NA、_ND 或 Date 作为值。
我用来加载excel的代码如下
xls_file = pd.ExcelFile("Excel File")
df = xls_file.parse('Sheet1',parse_dates=True)
df = df.replace(np.nan, '') #replace NaN with blank string
df = df.replace('NA', '') #replace "NA" with blank string
df = df.replace('_ND', '') #replace "NA" with blank string
df.to_sql('MEM_TABLE', conn_ora, if_exists='append', index = False )
to_sql 方法创建的表具有以下结构
MEM_TABLE(
date CLOB NULL,
emp_nbr NUMBER(19,0) NULL
)
在数据框中,它读取类似这样的内容
DATE EMP_NBR
0 2
1 2018-01-04 00:00:00 1
2 2018-01-01 00:00:00 2
3 2018-01-03 00:00:00 1
4 1
5 1
看起来 Pandas 在创建 DataFrame 时会自动转换 2018 年 1 月 4 日至今。 我在下面遇到的错误,我相信这是因为表 MEM_TABLE 中的 DATE 列是 CLOB 并且在 dataFrame 中,日期字段具有 DATE 对象。看起来日期对象无法插入到 CLOB 单元格中。
TypeError: 期望字符串或字节对象
如果日期是字符串(即“1/4/2018”),我不会收到任何错误。
我的问题是 无论如何在创建数据框时禁用日期字段上的自动解析?
【问题讨论】:
标签: python oracle pandas dataframe cx-oracle