用python实现将Excel文件中的数据按照树级别导入oracle数据库的代码
时间: 2024-03-17 18:40:42 浏览: 137
好的,以下是一个简单的Python代码示例,用于从Excel文件中读取数据并将其按照树级别导入Oracle数据库。请注意,此示例仅适用于具有以下结构的Excel文件:
| ID | Parent ID | Name |
|----|----------|--------|
| 1 | NULL | Root |
| 2 | 1 | Child1 |
| 3 | 1 | Child2 |
| 4 | 3 | Child3 |
您需要将代码中的以下变量替换为您自己的值:
- `excel_file_path`:Excel文件的路径
- `oracle_user`:Oracle数据库用户名
- `oracle_password`:Oracle数据库密码
- `oracle_host`:Oracle数据库主机名
- `oracle_port`:Oracle数据库端口
- `oracle_database`:Oracle数据库名称
- `table_name`:要插入数据的表名
- `column_names`:要插入数据的列名列表
```python
import pandas as pd
import cx_Oracle
# 设置Oracle数据库连接信息
oracle_user = "your_username"
oracle_password = "your_password"
oracle_host = "your_host"
oracle_port = "your_port"
oracle_database = "your_database"
# 设置要插入数据的表名和列名
table_name = "your_table_name"
column_names = ["id", "parent_id", "name"]
# 连接Oracle数据库
dsn = cx_Oracle.makedsn(oracle_host, oracle_port, service_name=oracle_database)
connection = cx_Oracle.connect(user=oracle_user, password=oracle_password, dsn=dsn)
cursor = connection.cursor()
# 从Excel文件中读取数据
excel_file_path = "your_excel_file_path"
df = pd.read_excel(excel_file_path)
# 定义函数,用于递归插入数据
def insert_data(id, parent_id, name):
cursor.execute(f"INSERT INTO {table_name} ({','.join(column_names)}) VALUES (:1,:2,:3)", (id, parent_id, name))
connection.commit()
children = df[df["Parent ID"] == id]
for index, row in children.iterrows():
insert_data(row["ID"], row["Parent ID"], row["Name"])
# 插入数据
root_node = df[df["Parent ID"].isnull()]
for index, row in root_node.iterrows():
insert_data(row["ID"], row["Parent ID"], row["Name"])
# 关闭数据库连接
cursor.close()
connection.close()
```
请注意,此代码示例仅供参考,您需要根据您的具体情况进行修改和调整。同时,我也建议您在执行此代码之前先备份您的数据,以免发生意外情况。
阅读全文