我正在尝试将一个框架批量加载到Oracle表中。发生以下错误:
DPY-3013:数据库类型DB_TYPE_NUMBER不支持Python类型str
逐个插入记录时不会出现错误。
Oracle表:
| 栏目名称|数据类型|
| --|--|
| 使|VARCHAR 2(20字节)|
| 模型|VARCHAR 2(20字节)|
| 重量|NUMBER|
| 年|数量(38,0)|
Python代码
import pandas as pd
import numpy as np
data = {
'Make': ['Honda', 'Toyota', 'BMW', 'Honda'],
'Model': ['Civic', 'Camry', 'Caravan', 'Accord'],
'Weight': [1020.25, np.NaN, 1235.37, 940.9],
'Year': [2021, 2023, 2019, np.NaN]
}
df = pd.DataFrame(data)
print(df)
print(df.dtypes)
try:
with db_connection.cursor() as cursor:
cursor.executemany('insert into myTable values(:1, :2, :3, :4)', df.fillna('').values.tolist())
db_connection.commit()
except Exception as error:
print(error)
字符串
请注意,浮点数NaN
必须作为null
值插入表中。
我尝试了df['Weight'].fillna(float('NaN'), inplace=True)
和df['Year'].fillna(float('NaN'), inplace=True)
1条答案
按热度按时间kognpnkq1#
您的错误消息指出您正在尝试将字符串插入
NUMBER
类型的列与其将所有列的
NaN
值替换为空字符串,不如根据其数据类型单独处理每列:NaN
字符串列替换为空字符串NaN
替换为sentinel值或特定数字字符串