使用python脚本把CSV文件数据导入ORACLE
时间: 2023-05-23 10:03:38 浏览: 153
可以使用Python中的pandas库来读取CSV文件数据,并使用cx_Oracle库连接并导入到ORACLE数据库中。以下是示例代码:
```python
import pandas as pd
import cx_Oracle
# 读取CSV文件数据
df = pd.read_csv('data.csv')
# 建立ORACLE数据库连接
dsn = cx_Oracle.makedsn('hostname', port, service_name='ORCL')
conn = cx_Oracle.connect(user='username', password='password', dsn=dsn)
# 将数据写入ORACLE数据库
cursor = conn.cursor()
for row in df.itertuples(index=False):
cursor.execute('INSERT INTO table_name VALUES (:1, :2, :3, :4)', row)
conn.commit()
# 关闭连接
cursor.close()
conn.close()
```
请注意,您需要将代码中的hostname、port、user、password和table_name替换为您自己的值。
相关问题
使用python脚本把CSV文件数据导入ORACLE,效率更高,10000行提交一次。
你可以使用Python的csv模块读取CSV文件中的数据,并使用Python的cx_Oracle模块将数据批量插入Oracle数据库。可以使用以下代码示例:
```python
import csv
import cx_Oracle
# Oracle数据库连接信息
dsn_tns = cx_Oracle.makedsn('localhost', '1521', 'ORCLCDB')
conn = cx_Oracle.connect(user='username', password='password', dsn=dsn_tns)
cur = conn.cursor()
# CSV文件路径和名称
file_path = 'data.csv'
# 批量插入数据的阈值
batch_size = 10000
# 读取CSV文件中的数据
with open(file_path, newline='') as csvfile:
reader = csv.reader(csvfile)
header = next(reader)
rows = []
for row in reader:
rows.append(row)
# 当达到批量插入的阈值时,执行一次批量插入
if len(rows) == batch_size:
cur.executemany('INSERT INTO table_name(col1, col2, col3) VALUES(:1, :2, :3)', rows)
rows = []
# 处理剩余数据
if rows:
cur.executemany('INSERT INTO table_name(col1, col2, col3) VALUES(:1, :2, :3)', rows)
# 提交事务并关闭连接
conn.commit()
cur.close()
conn.close()
```
该代码示例中,使用了Oracle提供的批量插入API,每读取到batch_size行数据时,会执行一次批量插入操作,提高了数据插入的效率。
使用python脚本把CSV文件数据导入ORACLE,效率更高,10000行提交一次。并每次打印提交数量
您好,我可以回答您的问题。以下是 Python 脚本将 CSV 文件数据导入 Oracle 数据库的实现方法:
```python
import cx_Oracle
import csv
# 连接数据库
conn = cx_Oracle.connect('username/password@database_host/database_name')
# 打开 CSV 文件,获取数据
with open('data.csv', 'r') as f:
reader = csv.reader(f)
headers = next(reader) # 获取表头
rows = [tuple(row) for row in reader] # 转换为元组
# 分批次提交数据
batch_size = 10000
for i in range(0, len(rows), batch_size):
batch_rows = rows[i:i+batch_size]
cursor = conn.cursor()
cursor.executemany(f"INSERT INTO table_name VALUES ({','.join(':'*len(headers))})", batch_rows)
cursor.close()
conn.commit()
print(f'已提交 {len(batch_rows)} 行数据')
# 关闭数据库连接
conn.close()
```
这个脚本将 CSV 文件中的数据导入到名为 `table_name` 的表中,并且每 10000 行数据提交一次,并打印出当前提交的数据数量。如果您有更多的问题,请随时问我。
阅读全文