【发布时间】:2022-01-04 14:15:23
【问题描述】:
使用 python 代码将数据从 csv 文件加载到 oracle db 时。将数据加载到 oracle db 后,真值显示为 1,假值显示为 0 我正在使用以下 python 代码:
import cx_Oracle as orcCon
from cx_Oracle import DatabaseError
import pandas as pd
import csv
csv_input=pd.read_csv(r"E:\Python_projects\test\python1.csv",index_col=False,na_values=" ").fillna('')
#csv_input.head()
#print(csv_input)
try:
conn = orcCon.connect('scott/tiger@localhost:1522/orcl',encoding="UTF-8")
if conn:
print("cx_Oracle version:", orcCon.version)
print("Database version:", conn.version)
print("Client version:", orcCon.clientversion())
# Now execute the sqlquery
cursor = conn.cursor()
print("You're connected.................")
print("TRUNCATING THE TARGET TABLE")
cursor.execute("TRUNCATE TABLE PYTHON_TESTING")
print("Inserting data into table")
for i,row in csv_input.iterrows():
sql = "INSERT INTO PYTHON_TESTING(C1,C2,C3)VALUES(:1,:2,:3)"
cursor.execute(sql, tuple(row))
# the connection is not autocommitted by default, so we must commit to save our changes
conn.commit()
#print("Record inserted successfullly")
except DatabaseError as e:
err, = e.args
print("Oracle-Error-Code:", err.code)
print("Oracle-Error-Message:", err.message)
finally:
cursor.close()
conn.close()
我已将测试 csv 文件创建为:
当加载到 Oracle 表数据中的数据显示为:
我正在使用 python 3.9.2
【问题讨论】:
-
请edit 带有minimal reproducible example 的问题包括:表格的
CREATE TABLE语句;以及您的预期输出。 Oracle 在 SQL 中没有布尔数据类型,因此不清楚为什么您会对输出不同感到惊讶(除非您期望字符串'TRUE'和'FALSE')? -
我使用过:CREATE TABLE PYTHON_TESTING (C1 VARCHAR2(30), C2 VARCHAR2(30), C3 VARCHAR2(30));
-
我希望输出与 Csv 文件相同
-
如果在 Excel 中将
FALSE放入 A1,将0放入 B1,将=A1=B1放入 C1,则 C1 为TRUE。为什么您希望布尔值映射到字符串文字'TRUE'或'FALSE'而不是数字表示1和0? -
如果你在内循环中添加
print(row),那么你会得到true/false值还是1/0值?
标签: python-3.x pandas oracle dataframe cx-oracle