我试图将一堆excelsheet加载到Oracle表中。表格不一致。因此,Oracle中的表需要根据Excelsheets中的列动态生成。这是我在互联网上找到的最简单的解决方案,所以我继续使用这种方法。我是Python的新手。你知道吗
以下面的结构为例。你知道吗
我正在尝试将下面的excel导入到MEM\u表中。日期字段不一致,可以将NA、\n ND或日期作为值。你知道吗
下面是我用来加载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
)
在dataframe中,它读取如下内容
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
看起来熊猫是自动铸造1/4/2018到目前为止,当创建数据帧。 下面我得到的错误,我认为是因为表MEM\u table中的DATE列是CLOB,而在dataFrame中,DATE字段有DATE object。看起来无法将日期对象插入CLOB单元格。你知道吗
TypeError: expecting string or bytes object
如果日期是字符串(即“1/4/2018”),我不会得到任何错误。你知道吗
我的问题是 在创建数据帧时,是否仍要禁用日期字段的自动解析?你知道吗
我使用的解决方法是创建一个方法undate(从现有解决方案中使用),将日期还原为原始格式。并在所有DataFrame列中运行该方法。实现是蛮力的,但它是有效的:P。我的最终代码是这样的。你知道吗
读取数据帧时,使用
'parse_dates' = False
df = xls_file.parse('Sheet1',parse_dates=False)
相关问题 更多 >
编程相关推荐